From e4145700393dc38b260470f0b86f82b990dabc98 Mon Sep 17 00:00:00 2001 From: peng-yongsheng <8082209@qq.com> Date: Fri, 27 Oct 2017 09:19:28 +0800 Subject: [PATCH] Add the implements of naming module. --- .../apm/collector/core/framework/Handler.java | 2 +- .../apm/collector/cluster/ClusterModule.java | 3 +- .../service/ModuleRegistrationGetService.java | 29 ++++ .../redis/ClusterModuleRedisProvider.java | 2 + .../RedisModuleRegistrationGetService.java | 32 +++++ .../ClusterModuleStandaloneProvider.java | 2 + ...tandaloneModuleRegistrationGetService.java | 32 +++++ ...va => ClusterModuleZookeeperProvider.java} | 8 +- ...va => ZookeeperModuleRegisterService.java} | 2 +- ...ZookeeperModuleRegistrationGetService.java | 31 +++++ ...g.apm.collector.core.module.ModuleProvider | 2 +- .../elasticsearch/ElasticSearchClient.java | 4 +- .../ElasticSearchClientException.java | 2 +- .../apm/collector/client/grpc/GRPCClient.java | 4 +- .../client/grpc/GRPCClientException.java | 2 +- .../apm/collector/client/h2/H2Client.java | 2 +- .../client/h2/H2ClientException.java | 2 +- .../collector/client/redis/RedisClient.java | 4 +- .../client/redis/RedisClientException.java | 2 +- .../client/zookeeper/ZookeeperClient.java | 2 +- .../zookeeper/ZookeeperClientException.java | 2 +- .../server-component/pom.xml | 21 +++ .../apm/collector/server/grpc/GRPCServer.java | 8 +- .../server/grpc/GRPCServerException.java | 2 +- apm-collector/apm-collector-core/pom.xml | 12 ++ .../core/{ => component}/client/Client.java | 2 +- .../client/ClientException.java | 2 +- .../core/component/server/Server.java | 35 +++++ .../component/server/ServerException.java | 35 +++++ .../core/component/server/ServerHandler.java | 25 ++++ .../core/component/server/ServerHolder.java | 72 ++++++++++ .../component/server/ServerModuleDefine.java | 27 ++++ .../apm/collector/core/module/Module.java | 2 +- .../apm/collector/core/util/BytesUtils.java | 43 ++++++ .../collector/core/util/CollectionUtils.java | 48 +++++++ .../collector/core/util/ColumnNameUtils.java | 44 ++++++ .../apm/collector/core/util/Const.java | 35 +++++ .../collector/core/util/DefinitionLoader.java | 96 +++++++++++++ .../apm/collector/core/util/ObjectUtils.java | 32 +++++ .../collector/core/util/ResourceUtils.java | 40 ++++++ .../apm/collector/core/util/StringUtils.java | 35 +++++ .../collector/core/util/TimeBucketUtils.java | 126 ++++++++++++++++++ .../collector-naming-jetty-provider/pom.xml | 5 + .../jetty/handler/AgentGRPCNamingHandler.java | 48 +++++++ .../handler/AgentJettyNamingHandler.java | 47 +++++++ .../jetty/handler/UIJettyNamingHandler.java | 47 +++++++ 46 files changed, 1032 insertions(+), 28 deletions(-) create mode 100644 apm-collector/apm-collector-cluster/collector-cluster-define/src/main/java/org/skywalking/apm/collector/cluster/service/ModuleRegistrationGetService.java create mode 100644 apm-collector/apm-collector-cluster/collector-cluster-redis-provider/src/main/java/org/skywalking/apm/collector/cluster/redis/service/RedisModuleRegistrationGetService.java create mode 100644 apm-collector/apm-collector-cluster/collector-cluster-standalone-provider/src/main/java/org/skywalking/apm/collector/cluster/standalone/service/StandaloneModuleRegistrationGetService.java rename apm-collector/apm-collector-cluster/collector-cluster-zookeeper-provider/src/main/java/org/skywalking/apm/collector/cluster/zookeeper/{ClusterModuleZKProvider.java => ClusterModuleZookeeperProvider.java} (79%) rename apm-collector/apm-collector-cluster/collector-cluster-zookeeper-provider/src/main/java/org/skywalking/apm/collector/cluster/zookeeper/service/{ZKModuleRegisterService.java => ZookeeperModuleRegisterService.java} (91%) create mode 100644 apm-collector/apm-collector-cluster/collector-cluster-zookeeper-provider/src/main/java/org/skywalking/apm/collector/cluster/zookeeper/service/ZookeeperModuleRegistrationGetService.java rename apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/{ => component}/client/Client.java (93%) rename apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/{ => component}/client/ClientException.java (94%) create mode 100644 apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/component/server/Server.java create mode 100644 apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/component/server/ServerException.java create mode 100644 apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/component/server/ServerHandler.java create mode 100644 apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/component/server/ServerHolder.java create mode 100644 apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/component/server/ServerModuleDefine.java create mode 100644 apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/BytesUtils.java create mode 100644 apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/CollectionUtils.java create mode 100644 apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/ColumnNameUtils.java create mode 100644 apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/Const.java create mode 100644 apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/DefinitionLoader.java create mode 100644 apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/ObjectUtils.java create mode 100644 apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/ResourceUtils.java create mode 100644 apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/StringUtils.java create mode 100644 apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/TimeBucketUtils.java create mode 100644 apm-collector/apm-collector-naming/collector-naming-jetty-provider/src/main/java/org/skywalking/apm/collector/naming/jetty/handler/AgentGRPCNamingHandler.java create mode 100644 apm-collector/apm-collector-naming/collector-naming-jetty-provider/src/main/java/org/skywalking/apm/collector/naming/jetty/handler/AgentJettyNamingHandler.java create mode 100644 apm-collector/apm-collector-naming/collector-naming-jetty-provider/src/main/java/org/skywalking/apm/collector/naming/jetty/handler/UIJettyNamingHandler.java diff --git a/apm-collector-3.2.3/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/framework/Handler.java b/apm-collector-3.2.3/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/framework/Handler.java index 9e9714d26..b482237be 100644 --- a/apm-collector-3.2.3/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/framework/Handler.java +++ b/apm-collector-3.2.3/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/framework/Handler.java @@ -21,5 +21,5 @@ package org.skywalking.apm.collector.core.framework; /** * @author peng-yongsheng */ -public interface Handler { +public interface ServerHandler { } diff --git a/apm-collector/apm-collector-cluster/collector-cluster-define/src/main/java/org/skywalking/apm/collector/cluster/ClusterModule.java b/apm-collector/apm-collector-cluster/collector-cluster-define/src/main/java/org/skywalking/apm/collector/cluster/ClusterModule.java index 9d0952aa7..549138288 100644 --- a/apm-collector/apm-collector-cluster/collector-cluster-define/src/main/java/org/skywalking/apm/collector/cluster/ClusterModule.java +++ b/apm-collector/apm-collector-cluster/collector-cluster-define/src/main/java/org/skywalking/apm/collector/cluster/ClusterModule.java @@ -19,6 +19,7 @@ package org.skywalking.apm.collector.cluster; import org.skywalking.apm.collector.cluster.service.ModuleRegisterService; +import org.skywalking.apm.collector.cluster.service.ModuleRegistrationGetService; import org.skywalking.apm.collector.core.module.Module; import org.skywalking.apm.collector.core.module.Service; @@ -34,6 +35,6 @@ public class ClusterModule extends Module { } @Override public Class[] services() { - return new Class[] {ModuleRegisterService.class}; + return new Class[] {ModuleRegisterService.class, ModuleRegistrationGetService.class}; } } diff --git a/apm-collector/apm-collector-cluster/collector-cluster-define/src/main/java/org/skywalking/apm/collector/cluster/service/ModuleRegistrationGetService.java b/apm-collector/apm-collector-cluster/collector-cluster-define/src/main/java/org/skywalking/apm/collector/cluster/service/ModuleRegistrationGetService.java new file mode 100644 index 000000000..6577ed310 --- /dev/null +++ b/apm-collector/apm-collector-cluster/collector-cluster-define/src/main/java/org/skywalking/apm/collector/cluster/service/ModuleRegistrationGetService.java @@ -0,0 +1,29 @@ +/* + * 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 + */ + +package org.skywalking.apm.collector.cluster.service; + +import java.util.Set; +import org.skywalking.apm.collector.core.module.Service; + +/** + * @author peng-yongsheng + */ +public interface ModuleRegistrationGetService extends Service { + Set get(String path); +} diff --git a/apm-collector/apm-collector-cluster/collector-cluster-redis-provider/src/main/java/org/skywalking/apm/collector/cluster/redis/ClusterModuleRedisProvider.java b/apm-collector/apm-collector-cluster/collector-cluster-redis-provider/src/main/java/org/skywalking/apm/collector/cluster/redis/ClusterModuleRedisProvider.java index bc02b1db9..bcb75bdbc 100644 --- a/apm-collector/apm-collector-cluster/collector-cluster-redis-provider/src/main/java/org/skywalking/apm/collector/cluster/redis/ClusterModuleRedisProvider.java +++ b/apm-collector/apm-collector-cluster/collector-cluster-redis-provider/src/main/java/org/skywalking/apm/collector/cluster/redis/ClusterModuleRedisProvider.java @@ -21,6 +21,7 @@ package org.skywalking.apm.collector.cluster.redis; import java.util.Properties; import org.skywalking.apm.collector.cluster.ClusterModule; import org.skywalking.apm.collector.cluster.redis.service.RedisModuleRegisterService; +import org.skywalking.apm.collector.cluster.redis.service.RedisModuleRegistrationGetService; import org.skywalking.apm.collector.cluster.service.ModuleRegisterService; import org.skywalking.apm.collector.core.module.Module; import org.skywalking.apm.collector.core.module.ModuleProvider; @@ -41,6 +42,7 @@ public class ClusterModuleRedisProvider extends ModuleProvider { @Override public void prepare(Properties config) throws ServiceNotProvidedException { this.registerServiceImplementation(ModuleRegisterService.class, new RedisModuleRegisterService()); + this.registerServiceImplementation(ModuleRegisterService.class, new RedisModuleRegistrationGetService()); } @Override public void init(Properties config) throws ServiceNotProvidedException { diff --git a/apm-collector/apm-collector-cluster/collector-cluster-redis-provider/src/main/java/org/skywalking/apm/collector/cluster/redis/service/RedisModuleRegistrationGetService.java b/apm-collector/apm-collector-cluster/collector-cluster-redis-provider/src/main/java/org/skywalking/apm/collector/cluster/redis/service/RedisModuleRegistrationGetService.java new file mode 100644 index 000000000..1428291b9 --- /dev/null +++ b/apm-collector/apm-collector-cluster/collector-cluster-redis-provider/src/main/java/org/skywalking/apm/collector/cluster/redis/service/RedisModuleRegistrationGetService.java @@ -0,0 +1,32 @@ +/* + * 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 + */ + +package org.skywalking.apm.collector.cluster.redis.service; + +import java.util.Set; +import org.skywalking.apm.collector.cluster.service.ModuleRegistrationGetService; + +/** + * @author peng-yongsheng + */ +public class RedisModuleRegistrationGetService implements ModuleRegistrationGetService { + + @Override public Set get(String path) { + return null; + } +} diff --git a/apm-collector/apm-collector-cluster/collector-cluster-standalone-provider/src/main/java/org/skywalking/apm/collector/cluster/standalone/ClusterModuleStandaloneProvider.java b/apm-collector/apm-collector-cluster/collector-cluster-standalone-provider/src/main/java/org/skywalking/apm/collector/cluster/standalone/ClusterModuleStandaloneProvider.java index dd9d47830..0b065687f 100644 --- a/apm-collector/apm-collector-cluster/collector-cluster-standalone-provider/src/main/java/org/skywalking/apm/collector/cluster/standalone/ClusterModuleStandaloneProvider.java +++ b/apm-collector/apm-collector-cluster/collector-cluster-standalone-provider/src/main/java/org/skywalking/apm/collector/cluster/standalone/ClusterModuleStandaloneProvider.java @@ -22,6 +22,7 @@ import java.util.Properties; import org.skywalking.apm.collector.cluster.ClusterModule; import org.skywalking.apm.collector.cluster.service.ModuleRegisterService; import org.skywalking.apm.collector.cluster.standalone.service.StandaloneModuleRegisterService; +import org.skywalking.apm.collector.cluster.standalone.service.StandaloneModuleRegistrationGetService; import org.skywalking.apm.collector.core.module.Module; import org.skywalking.apm.collector.core.module.ModuleProvider; import org.skywalking.apm.collector.core.module.ServiceNotProvidedException; @@ -41,6 +42,7 @@ public class ClusterModuleStandaloneProvider extends ModuleProvider { @Override public void prepare(Properties config) throws ServiceNotProvidedException { this.registerServiceImplementation(ModuleRegisterService.class, new StandaloneModuleRegisterService()); + this.registerServiceImplementation(ModuleRegisterService.class, new StandaloneModuleRegistrationGetService()); } @Override public void init(Properties config) throws ServiceNotProvidedException { diff --git a/apm-collector/apm-collector-cluster/collector-cluster-standalone-provider/src/main/java/org/skywalking/apm/collector/cluster/standalone/service/StandaloneModuleRegistrationGetService.java b/apm-collector/apm-collector-cluster/collector-cluster-standalone-provider/src/main/java/org/skywalking/apm/collector/cluster/standalone/service/StandaloneModuleRegistrationGetService.java new file mode 100644 index 000000000..5dd3edc71 --- /dev/null +++ b/apm-collector/apm-collector-cluster/collector-cluster-standalone-provider/src/main/java/org/skywalking/apm/collector/cluster/standalone/service/StandaloneModuleRegistrationGetService.java @@ -0,0 +1,32 @@ +/* + * 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 + */ + +package org.skywalking.apm.collector.cluster.standalone.service; + +import java.util.Set; +import org.skywalking.apm.collector.cluster.service.ModuleRegistrationGetService; + +/** + * @author peng-yongsheng + */ +public class StandaloneModuleRegistrationGetService implements ModuleRegistrationGetService { + + @Override public Set get(String path) { + return null; + } +} diff --git a/apm-collector/apm-collector-cluster/collector-cluster-zookeeper-provider/src/main/java/org/skywalking/apm/collector/cluster/zookeeper/ClusterModuleZKProvider.java b/apm-collector/apm-collector-cluster/collector-cluster-zookeeper-provider/src/main/java/org/skywalking/apm/collector/cluster/zookeeper/ClusterModuleZookeeperProvider.java similarity index 79% rename from apm-collector/apm-collector-cluster/collector-cluster-zookeeper-provider/src/main/java/org/skywalking/apm/collector/cluster/zookeeper/ClusterModuleZKProvider.java rename to apm-collector/apm-collector-cluster/collector-cluster-zookeeper-provider/src/main/java/org/skywalking/apm/collector/cluster/zookeeper/ClusterModuleZookeeperProvider.java index 918d8873b..cf78e5d53 100644 --- a/apm-collector/apm-collector-cluster/collector-cluster-zookeeper-provider/src/main/java/org/skywalking/apm/collector/cluster/zookeeper/ClusterModuleZKProvider.java +++ b/apm-collector/apm-collector-cluster/collector-cluster-zookeeper-provider/src/main/java/org/skywalking/apm/collector/cluster/zookeeper/ClusterModuleZookeeperProvider.java @@ -21,7 +21,8 @@ package org.skywalking.apm.collector.cluster.zookeeper; import java.util.Properties; import org.skywalking.apm.collector.cluster.ClusterModule; import org.skywalking.apm.collector.cluster.service.ModuleRegisterService; -import org.skywalking.apm.collector.cluster.zookeeper.service.ZKModuleRegisterService; +import org.skywalking.apm.collector.cluster.zookeeper.service.ZookeeperModuleRegisterService; +import org.skywalking.apm.collector.cluster.zookeeper.service.ZookeeperModuleRegistrationGetService; import org.skywalking.apm.collector.core.module.Module; import org.skywalking.apm.collector.core.module.ModuleProvider; import org.skywalking.apm.collector.core.module.ServiceNotProvidedException; @@ -29,7 +30,7 @@ import org.skywalking.apm.collector.core.module.ServiceNotProvidedException; /** * @author peng-yongsheng */ -public class ClusterModuleZKProvider extends ModuleProvider { +public class ClusterModuleZookeeperProvider extends ModuleProvider { @Override public String name() { return "zookeeper"; @@ -40,7 +41,8 @@ public class ClusterModuleZKProvider extends ModuleProvider { } @Override public void prepare(Properties config) throws ServiceNotProvidedException { - this.registerServiceImplementation(ModuleRegisterService.class, new ZKModuleRegisterService()); + this.registerServiceImplementation(ModuleRegisterService.class, new ZookeeperModuleRegisterService()); + this.registerServiceImplementation(ModuleRegisterService.class, new ZookeeperModuleRegistrationGetService()); } @Override public void init(Properties config) throws ServiceNotProvidedException { diff --git a/apm-collector/apm-collector-cluster/collector-cluster-zookeeper-provider/src/main/java/org/skywalking/apm/collector/cluster/zookeeper/service/ZKModuleRegisterService.java b/apm-collector/apm-collector-cluster/collector-cluster-zookeeper-provider/src/main/java/org/skywalking/apm/collector/cluster/zookeeper/service/ZookeeperModuleRegisterService.java similarity index 91% rename from apm-collector/apm-collector-cluster/collector-cluster-zookeeper-provider/src/main/java/org/skywalking/apm/collector/cluster/zookeeper/service/ZKModuleRegisterService.java rename to apm-collector/apm-collector-cluster/collector-cluster-zookeeper-provider/src/main/java/org/skywalking/apm/collector/cluster/zookeeper/service/ZookeeperModuleRegisterService.java index 9acc916df..2ef55e46e 100644 --- a/apm-collector/apm-collector-cluster/collector-cluster-zookeeper-provider/src/main/java/org/skywalking/apm/collector/cluster/zookeeper/service/ZKModuleRegisterService.java +++ b/apm-collector/apm-collector-cluster/collector-cluster-zookeeper-provider/src/main/java/org/skywalking/apm/collector/cluster/zookeeper/service/ZookeeperModuleRegisterService.java @@ -23,5 +23,5 @@ import org.skywalking.apm.collector.cluster.service.ModuleRegisterService; /** * @author peng-yongsheng */ -public class ZKModuleRegisterService implements ModuleRegisterService { +public class ZookeeperModuleRegisterService implements ModuleRegisterService { } diff --git a/apm-collector/apm-collector-cluster/collector-cluster-zookeeper-provider/src/main/java/org/skywalking/apm/collector/cluster/zookeeper/service/ZookeeperModuleRegistrationGetService.java b/apm-collector/apm-collector-cluster/collector-cluster-zookeeper-provider/src/main/java/org/skywalking/apm/collector/cluster/zookeeper/service/ZookeeperModuleRegistrationGetService.java new file mode 100644 index 000000000..852b76e6c --- /dev/null +++ b/apm-collector/apm-collector-cluster/collector-cluster-zookeeper-provider/src/main/java/org/skywalking/apm/collector/cluster/zookeeper/service/ZookeeperModuleRegistrationGetService.java @@ -0,0 +1,31 @@ +/* + * 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 + */ + +package org.skywalking.apm.collector.cluster.zookeeper.service; + +import java.util.Set; +import org.skywalking.apm.collector.cluster.service.ModuleRegistrationGetService; + +/** + * @author peng-yongsheng + */ +public class ZookeeperModuleRegistrationGetService implements ModuleRegistrationGetService { + @Override public Set get(String path) { + return null; + } +} diff --git a/apm-collector/apm-collector-cluster/collector-cluster-zookeeper-provider/src/main/resources/META-INF/services/org.skywalking.apm.collector.core.module.ModuleProvider b/apm-collector/apm-collector-cluster/collector-cluster-zookeeper-provider/src/main/resources/META-INF/services/org.skywalking.apm.collector.core.module.ModuleProvider index cecbd2ea4..61623297f 100644 --- a/apm-collector/apm-collector-cluster/collector-cluster-zookeeper-provider/src/main/resources/META-INF/services/org.skywalking.apm.collector.core.module.ModuleProvider +++ b/apm-collector/apm-collector-cluster/collector-cluster-zookeeper-provider/src/main/resources/META-INF/services/org.skywalking.apm.collector.core.module.ModuleProvider @@ -16,4 +16,4 @@ # Project repository: https://github.com/OpenSkywalking/skywalking # -org.skywalking.apm.collector.cluster.zookeeper.ClusterModuleZKProvider \ No newline at end of file +org.skywalking.apm.collector.cluster.zookeeper.ClusterModuleZookeeperProvider \ No newline at end of file diff --git a/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/elasticsearch/ElasticSearchClient.java b/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/elasticsearch/ElasticSearchClient.java index 791199a17..48ecff2fa 100644 --- a/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/elasticsearch/ElasticSearchClient.java +++ b/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/elasticsearch/ElasticSearchClient.java @@ -38,8 +38,8 @@ import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.transport.InetSocketTransportAddress; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.transport.client.PreBuiltTransportClient; -import org.skywalking.apm.collector.core.client.Client; -import org.skywalking.apm.collector.core.client.ClientException; +import org.skywalking.apm.collector.core.component.client.Client; +import org.skywalking.apm.collector.core.component.client.ClientException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/elasticsearch/ElasticSearchClientException.java b/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/elasticsearch/ElasticSearchClientException.java index 24eb74459..09a309db2 100644 --- a/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/elasticsearch/ElasticSearchClientException.java +++ b/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/elasticsearch/ElasticSearchClientException.java @@ -18,7 +18,7 @@ package org.skywalking.apm.collector.client.elasticsearch; -import org.skywalking.apm.collector.core.client.ClientException; +import org.skywalking.apm.collector.core.component.client.ClientException; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/grpc/GRPCClient.java b/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/grpc/GRPCClient.java index 782148bbd..bd57d4b24 100644 --- a/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/grpc/GRPCClient.java +++ b/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/grpc/GRPCClient.java @@ -20,8 +20,8 @@ package org.skywalking.apm.collector.client.grpc; import io.grpc.ManagedChannel; import io.grpc.ManagedChannelBuilder; -import org.skywalking.apm.collector.core.client.Client; -import org.skywalking.apm.collector.core.client.ClientException; +import org.skywalking.apm.collector.core.component.client.Client; +import org.skywalking.apm.collector.core.component.client.ClientException; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/grpc/GRPCClientException.java b/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/grpc/GRPCClientException.java index a0322ea6a..3c6d8813c 100644 --- a/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/grpc/GRPCClientException.java +++ b/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/grpc/GRPCClientException.java @@ -18,7 +18,7 @@ package org.skywalking.apm.collector.client.grpc; -import org.skywalking.apm.collector.core.client.ClientException; +import org.skywalking.apm.collector.core.component.client.ClientException; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/h2/H2Client.java b/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/h2/H2Client.java index 74dd9b922..4b1f2f23e 100644 --- a/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/h2/H2Client.java +++ b/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/h2/H2Client.java @@ -25,7 +25,7 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import org.h2.util.IOUtils; -import org.skywalking.apm.collector.core.client.Client; +import org.skywalking.apm.collector.core.component.client.Client; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/h2/H2ClientException.java b/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/h2/H2ClientException.java index 45e4828a8..7e29e6762 100644 --- a/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/h2/H2ClientException.java +++ b/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/h2/H2ClientException.java @@ -18,7 +18,7 @@ package org.skywalking.apm.collector.client.h2; -import org.skywalking.apm.collector.core.client.ClientException; +import org.skywalking.apm.collector.core.component.client.ClientException; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/redis/RedisClient.java b/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/redis/RedisClient.java index e75954743..c72444c96 100644 --- a/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/redis/RedisClient.java +++ b/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/redis/RedisClient.java @@ -18,8 +18,8 @@ package org.skywalking.apm.collector.client.redis; -import org.skywalking.apm.collector.core.client.Client; -import org.skywalking.apm.collector.core.client.ClientException; +import org.skywalking.apm.collector.core.component.client.Client; +import org.skywalking.apm.collector.core.component.client.ClientException; import redis.clients.jedis.Jedis; /** diff --git a/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/redis/RedisClientException.java b/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/redis/RedisClientException.java index 0e3017225..4848ccae1 100644 --- a/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/redis/RedisClientException.java +++ b/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/redis/RedisClientException.java @@ -18,7 +18,7 @@ package org.skywalking.apm.collector.client.redis; -import org.skywalking.apm.collector.core.client.ClientException; +import org.skywalking.apm.collector.core.component.client.ClientException; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/zookeeper/ZookeeperClient.java b/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/zookeeper/ZookeeperClient.java index a561e8b80..3746641c3 100644 --- a/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/zookeeper/ZookeeperClient.java +++ b/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/zookeeper/ZookeeperClient.java @@ -26,7 +26,7 @@ import org.apache.zookeeper.Watcher; import org.apache.zookeeper.ZooKeeper; import org.apache.zookeeper.data.ACL; import org.apache.zookeeper.data.Stat; -import org.skywalking.apm.collector.core.client.Client; +import org.skywalking.apm.collector.core.component.client.Client; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/zookeeper/ZookeeperClientException.java b/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/zookeeper/ZookeeperClientException.java index cdf80f33f..248bafd83 100644 --- a/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/zookeeper/ZookeeperClientException.java +++ b/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/zookeeper/ZookeeperClientException.java @@ -18,7 +18,7 @@ package org.skywalking.apm.collector.client.zookeeper; -import org.skywalking.apm.collector.core.client.ClientException; +import org.skywalking.apm.collector.core.component.client.ClientException; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-component/server-component/pom.xml b/apm-collector/apm-collector-component/server-component/pom.xml index 1664b0c9b..a0c33f864 100644 --- a/apm-collector/apm-collector-component/server-component/pom.xml +++ b/apm-collector/apm-collector-component/server-component/pom.xml @@ -12,4 +12,25 @@ server-component jar + + 9.4.2.v20170220 + + + + + org.skywalking + apm-network + ${project.version} + + + org.eclipse.jetty + jetty-server + ${jetty.version} + + + org.eclipse.jetty + jetty-servlet + ${jetty.version} + + \ No newline at end of file diff --git a/apm-collector/apm-collector-component/server-component/src/main/java/org/skywalking/apm/collector/server/grpc/GRPCServer.java b/apm-collector/apm-collector-component/server-component/src/main/java/org/skywalking/apm/collector/server/grpc/GRPCServer.java index 89dd7d10a..8913e2556 100644 --- a/apm-collector/apm-collector-component/server-component/src/main/java/org/skywalking/apm/collector/server/grpc/GRPCServer.java +++ b/apm-collector/apm-collector-component/server-component/src/main/java/org/skywalking/apm/collector/server/grpc/GRPCServer.java @@ -21,9 +21,9 @@ package org.skywalking.apm.collector.server.grpc; import io.grpc.netty.NettyServerBuilder; import java.io.IOException; import java.net.InetSocketAddress; -import org.skywalking.apm.collector.core.framework.Handler; -import org.skywalking.apm.collector.core.server.Server; -import org.skywalking.apm.collector.core.server.ServerException; +import org.skywalking.apm.collector.core.component.server.Server; +import org.skywalking.apm.collector.core.component.server.ServerException; +import org.skywalking.apm.collector.core.component.server.ServerHandler; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -67,7 +67,7 @@ public class GRPCServer implements Server { } } - @Override public void addHandler(Handler handler) { + @Override public void addHandler(ServerHandler handler) { nettyServerBuilder.addService((io.grpc.BindableService)handler); } } diff --git a/apm-collector/apm-collector-component/server-component/src/main/java/org/skywalking/apm/collector/server/grpc/GRPCServerException.java b/apm-collector/apm-collector-component/server-component/src/main/java/org/skywalking/apm/collector/server/grpc/GRPCServerException.java index 6824f8538..98735c54b 100644 --- a/apm-collector/apm-collector-component/server-component/src/main/java/org/skywalking/apm/collector/server/grpc/GRPCServerException.java +++ b/apm-collector/apm-collector-component/server-component/src/main/java/org/skywalking/apm/collector/server/grpc/GRPCServerException.java @@ -18,7 +18,7 @@ package org.skywalking.apm.collector.server.grpc; -import org.skywalking.apm.collector.core.server.ServerException; +import org.skywalking.apm.collector.core.component.server.ServerException; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-core/pom.xml b/apm-collector/apm-collector-core/pom.xml index 92e2cf6af..4d35a3a00 100644 --- a/apm-collector/apm-collector-core/pom.xml +++ b/apm-collector/apm-collector-core/pom.xml @@ -12,4 +12,16 @@ apm-collector-core jar + + + org.yaml + snakeyaml + 1.18 + + + com.google.code.gson + gson + 2.8.1 + + \ No newline at end of file diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/client/Client.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/component/client/Client.java similarity index 93% rename from apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/client/Client.java rename to apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/component/client/Client.java index d6f4141eb..bc41093bc 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/client/Client.java +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/component/client/Client.java @@ -16,7 +16,7 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.core.client; +package org.skywalking.apm.collector.core.component.client; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/client/ClientException.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/component/client/ClientException.java similarity index 94% rename from apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/client/ClientException.java rename to apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/component/client/ClientException.java index b3088011c..46efbd341 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/client/ClientException.java +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/component/client/ClientException.java @@ -16,7 +16,7 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.core.client; +package org.skywalking.apm.collector.core.component.client; import org.skywalking.apm.collector.core.CollectorException; diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/component/server/Server.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/component/server/Server.java new file mode 100644 index 000000000..e177840b3 --- /dev/null +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/component/server/Server.java @@ -0,0 +1,35 @@ +/* + * 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 + */ + +package org.skywalking.apm.collector.core.component.server; + +/** + * @author peng-yongsheng + */ +public interface Server { + + String hostPort(); + + String serverClassify(); + + void initialize() throws ServerException; + + void start() throws ServerException; + + void addHandler(ServerHandler handler); +} diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/component/server/ServerException.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/component/server/ServerException.java new file mode 100644 index 000000000..68ed3153b --- /dev/null +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/component/server/ServerException.java @@ -0,0 +1,35 @@ +/* + * 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 + */ + +package org.skywalking.apm.collector.core.component.server; + +import org.skywalking.apm.collector.core.CollectorException; + +/** + * @author peng-yongsheng + */ +public abstract class ServerException extends CollectorException { + + public ServerException(String message) { + super(message); + } + + public ServerException(String message, Throwable cause) { + super(message, cause); + } +} diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/component/server/ServerHandler.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/component/server/ServerHandler.java new file mode 100644 index 000000000..917bc0199 --- /dev/null +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/component/server/ServerHandler.java @@ -0,0 +1,25 @@ +/* + * 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 + */ + +package org.skywalking.apm.collector.core.component.server; + +/** + * @author peng-yongsheng + */ +public interface ServerHandler { +} diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/component/server/ServerHolder.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/component/server/ServerHolder.java new file mode 100644 index 000000000..c630c34b9 --- /dev/null +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/component/server/ServerHolder.java @@ -0,0 +1,72 @@ +/* + * 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 + */ + +package org.skywalking.apm.collector.core.component.server; + +import java.util.LinkedList; +import java.util.List; +import org.skywalking.apm.collector.core.util.CollectionUtils; +import org.skywalking.apm.collector.core.util.ObjectUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author peng-yongsheng + */ +public class ServerHolder { + + private final Logger logger = LoggerFactory.getLogger(ServerHolder.class); + + private List servers; + + public ServerHolder() { + servers = new LinkedList<>(); + } + + public void holdServer(Server newServer, List handlers) throws ServerException { + if (ObjectUtils.isEmpty(newServer) || CollectionUtils.isEmpty(handlers)) { + return; + } + + boolean isNewServer = true; + for (Server server : servers) { + if (server.hostPort().equals(newServer.hostPort()) && server.serverClassify().equals(newServer.serverClassify())) { + isNewServer = false; + addHandler(handlers, server); + } + } + if (isNewServer) { + newServer.initialize(); + servers.add(newServer); + addHandler(handlers, newServer); + } + } + + private void addHandler(List handlers, Server server) { + if (CollectionUtils.isNotEmpty(handlers)) { + handlers.forEach(handler -> { + server.addHandler(handler); + logger.debug("add handler into server: {}, handler name: {}", server.hostPort(), handler.getClass().getName()); + }); + } + } + + public List getServers() { + return servers; + } +} diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/component/server/ServerModuleDefine.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/component/server/ServerModuleDefine.java new file mode 100644 index 000000000..6814568d3 --- /dev/null +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/component/server/ServerModuleDefine.java @@ -0,0 +1,27 @@ +/* + * 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 + */ + +package org.skywalking.apm.collector.core.component.server; + +import org.skywalking.apm.collector.core.module.ModuleDefine; + +/** + * @author peng-yongsheng + */ +public abstract class ServerModuleDefine extends ModuleDefine { +} diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/Module.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/Module.java index 0dbd2a1db..99f530378 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/Module.java +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/Module.java @@ -38,7 +38,7 @@ public abstract class Module { /** * @return the {@link Service} provided by this module. */ - public abstract Class[] services(); + public abstract Class[] services(); /** * Run the prepare stage for the module, including finding all potential providers, and asking them to prepare. diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/BytesUtils.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/BytesUtils.java new file mode 100644 index 000000000..d39c914c1 --- /dev/null +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/BytesUtils.java @@ -0,0 +1,43 @@ +/* + * 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 + */ + +package org.skywalking.apm.collector.core.util; + +/** + * @author peng-yongsheng + */ +public class BytesUtils { + + public static byte[] long2Bytes(long num) { + byte[] byteNum = new byte[8]; + for (int ix = 0; ix < 8; ++ix) { + int offset = 64 - (ix + 1) * 8; + byteNum[ix] = (byte)((num >> offset) & 0xff); + } + return byteNum; + } + + public static long bytes2Long(byte[] byteNum) { + long num = 0; + for (int ix = 0; ix < 8; ++ix) { + num <<= 8; + num |= byteNum[ix] & 0xff; + } + return num; + } +} diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/CollectionUtils.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/CollectionUtils.java new file mode 100644 index 000000000..a0dd89bdb --- /dev/null +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/CollectionUtils.java @@ -0,0 +1,48 @@ +/* + * 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 + */ + +package org.skywalking.apm.collector.core.util; + +import java.util.List; +import java.util.Map; + +/** + * @author peng-yongsheng + */ +public class CollectionUtils { + + public static boolean isEmpty(Map map) { + return map == null || map.size() == 0; + } + + public static boolean isEmpty(List list) { + return list == null || list.size() == 0; + } + + public static boolean isNotEmpty(List list) { + return !isEmpty(list); + } + + public static boolean isNotEmpty(Map map) { + return !isEmpty(map); + } + + public static boolean isNotEmpty(T[] array) { + return array != null && array.length > 0; + } +} diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/ColumnNameUtils.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/ColumnNameUtils.java new file mode 100644 index 000000000..0909cf39e --- /dev/null +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/ColumnNameUtils.java @@ -0,0 +1,44 @@ +/* + * 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 + */ + +package org.skywalking.apm.collector.core.util; + +/** + * @author peng-yongsheng + */ +public enum ColumnNameUtils { + INSTANCE; + + public String rename(String columnName) { + StringBuilder renamedColumnName = new StringBuilder(); + char[] chars = columnName.toLowerCase().toCharArray(); + + boolean findUnderline = false; + for (char character : chars) { + if (character == '_') { + findUnderline = true; + } else if (findUnderline) { + renamedColumnName.append(String.valueOf(character).toUpperCase()); + findUnderline = false; + } else { + renamedColumnName.append(character); + } + } + return renamedColumnName.toString(); + } +} diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/Const.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/Const.java new file mode 100644 index 000000000..f6a4a9022 --- /dev/null +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/Const.java @@ -0,0 +1,35 @@ +/* + * 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 + */ + +package org.skywalking.apm.collector.core.util; + +/** + * @author peng-yongsheng + */ +public class Const { + public static final String ID_SPLIT = "_"; + public static final int USER_ID = 1; + public static final int NONE_SERVICE_ID = 1; + public static final String NONE_SERVICE_NAME = "None"; + public static final String USER_CODE = "User"; + public static final String SEGMENT_SPAN_SPLIT = "S"; + public static final String UNKNOWN = "Unknown"; + public static final String EXCEPTION = "Exception"; + public static final String EMPTY_STRING = ""; + public static final String FILE_SUFFIX = "sw"; +} diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/DefinitionLoader.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/DefinitionLoader.java new file mode 100644 index 000000000..461cff604 --- /dev/null +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/DefinitionLoader.java @@ -0,0 +1,96 @@ +/* + * 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 + */ + +package org.skywalking.apm.collector.core.util; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.net.URL; +import java.util.Enumeration; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; +import java.util.Objects; +import java.util.Properties; +import org.skywalking.apm.collector.core.framework.DefinitionFile; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author peng-yongsheng + */ +public class DefinitionLoader implements Iterable { + + private final Logger logger = LoggerFactory.getLogger(DefinitionLoader.class); + + private final Class definition; + private final DefinitionFile definitionFile; + + protected DefinitionLoader(Class svc, DefinitionFile definitionFile) { + this.definition = Objects.requireNonNull(svc, "definition interface cannot be null"); + this.definitionFile = definitionFile; + } + + public static DefinitionLoader load(Class definition, DefinitionFile definitionFile) { + return new DefinitionLoader(definition, definitionFile); + } + + @Override public final Iterator iterator() { + logger.info("load definition file: {}", definitionFile.get()); + List definitionList = new LinkedList<>(); + try { + Enumeration urlEnumeration = this.getClass().getClassLoader().getResources(definitionFile.get()); + while (urlEnumeration.hasMoreElements()) { + URL definitionFileURL = urlEnumeration.nextElement(); + logger.info("definition file url: {}", definitionFileURL.getPath()); + BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(definitionFileURL.openStream())); + Properties properties = new Properties(); + properties.load(bufferedReader); + + Enumeration defineItem = properties.propertyNames(); + while (defineItem.hasMoreElements()) { + String fullNameClass = (String)defineItem.nextElement(); + definitionList.add(fullNameClass); + } + } + } catch (IOException e) { + logger.error(e.getMessage(), e); + } + + Iterator moduleDefineIterator = definitionList.iterator(); + + return new Iterator() { + @Override public boolean hasNext() { + return moduleDefineIterator.hasNext(); + } + + @Override public D next() { + String definitionClass = moduleDefineIterator.next(); + logger.info("definitionClass: {}", definitionClass); + try { + Class c = Class.forName(definitionClass); + return (D)c.newInstance(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + }; + } +} diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/ObjectUtils.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/ObjectUtils.java new file mode 100644 index 000000000..428f09dac --- /dev/null +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/ObjectUtils.java @@ -0,0 +1,32 @@ +/* + * 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 + */ + +package org.skywalking.apm.collector.core.util; + +/** + * @author peng-yongsheng + */ +public class ObjectUtils { + public static boolean isEmpty(Object obj) { + return obj == null; + } + + public static boolean isNotEmpty(Object obj) { + return !isEmpty(obj); + } +} diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/ResourceUtils.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/ResourceUtils.java new file mode 100644 index 000000000..e1e832df5 --- /dev/null +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/ResourceUtils.java @@ -0,0 +1,40 @@ +/* + * 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 + */ + +package org.skywalking.apm.collector.core.util; + +import java.io.FileNotFoundException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.Reader; +import java.net.URL; + +/** + * @author peng-yongsheng + */ +public class ResourceUtils { + + public static Reader read(String fileName) throws FileNotFoundException { + URL url = ResourceUtils.class.getClassLoader().getResource(fileName); + if (url == null) { + throw new FileNotFoundException("file not found: " + fileName); + } + InputStream inputStream = ResourceUtils.class.getClassLoader().getResourceAsStream(fileName); + return new InputStreamReader(inputStream); + } +} diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/StringUtils.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/StringUtils.java new file mode 100644 index 000000000..eb4c00477 --- /dev/null +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/StringUtils.java @@ -0,0 +1,35 @@ +/* + * 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 + */ + +package org.skywalking.apm.collector.core.util; + +/** + * @author peng-yongsheng + */ +public class StringUtils { + + public static final String EMPTY_STRING = ""; + + public static boolean isEmpty(Object str) { + return str == null || EMPTY_STRING.equals(str); + } + + public static boolean isNotEmpty(Object str) { + return !isEmpty(str); + } +} diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/TimeBucketUtils.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/TimeBucketUtils.java new file mode 100644 index 000000000..4514ff991 --- /dev/null +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/TimeBucketUtils.java @@ -0,0 +1,126 @@ +/* + * 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 + */ + +package org.skywalking.apm.collector.core.util; + +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.TimeZone; +import org.skywalking.apm.collector.core.framework.UnexpectedException; + +/** + * @author peng-yongsheng + */ +public enum TimeBucketUtils { + INSTANCE; + + private final SimpleDateFormat dayDateFormat = new SimpleDateFormat("yyyyMMdd"); + private final SimpleDateFormat hourDateFormat = new SimpleDateFormat("yyyyMMddHH"); + private final SimpleDateFormat minuteDateFormat = new SimpleDateFormat("yyyyMMddHHmm"); + private final SimpleDateFormat secondDateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); + + public long getMinuteTimeBucket(long time) { + Calendar calendar = Calendar.getInstance(); + calendar.setTimeInMillis(time); + String timeStr = minuteDateFormat.format(calendar.getTime()); + return Long.valueOf(timeStr); + } + + public long getSecondTimeBucket(long time) { + Calendar calendar = Calendar.getInstance(); + calendar.setTimeInMillis(time); + String timeStr = secondDateFormat.format(calendar.getTime()); + return Long.valueOf(timeStr); + } + + public long getHourTimeBucket(long time) { + Calendar calendar = Calendar.getInstance(); + calendar.setTimeInMillis(time); + String timeStr = hourDateFormat.format(calendar.getTime()) + "00"; + return Long.valueOf(timeStr); + } + + public long getDayTimeBucket(long time) { + Calendar calendar = Calendar.getInstance(); + calendar.setTimeInMillis(time); + String timeStr = dayDateFormat.format(calendar.getTime()) + "0000"; + return Long.valueOf(timeStr); + } + + public long changeTimeBucket2TimeStamp(String timeBucketType, long timeBucket) { + if (TimeBucketType.SECOND.name().toLowerCase().equals(timeBucketType.toLowerCase())) { + Calendar calendar = Calendar.getInstance(); + calendar.set(Calendar.YEAR, Integer.valueOf(String.valueOf(timeBucket).substring(0, 4))); + calendar.set(Calendar.MONTH, Integer.valueOf(String.valueOf(timeBucket).substring(4, 6)) - 1); + calendar.set(Calendar.DAY_OF_MONTH, Integer.valueOf(String.valueOf(timeBucket).substring(6, 8))); + calendar.set(Calendar.HOUR_OF_DAY, Integer.valueOf(String.valueOf(timeBucket).substring(8, 10))); + calendar.set(Calendar.MINUTE, Integer.valueOf(String.valueOf(timeBucket).substring(10, 12))); + calendar.set(Calendar.SECOND, Integer.valueOf(String.valueOf(timeBucket).substring(12, 14))); + return calendar.getTimeInMillis(); + } else if (TimeBucketType.MINUTE.name().toLowerCase().equals(timeBucketType.toLowerCase())) { + Calendar calendar = Calendar.getInstance(); + calendar.set(Calendar.YEAR, Integer.valueOf(String.valueOf(timeBucket).substring(0, 4))); + calendar.set(Calendar.MONTH, Integer.valueOf(String.valueOf(timeBucket).substring(4, 6)) - 1); + calendar.set(Calendar.DAY_OF_MONTH, Integer.valueOf(String.valueOf(timeBucket).substring(6, 8))); + calendar.set(Calendar.HOUR_OF_DAY, Integer.valueOf(String.valueOf(timeBucket).substring(8, 10))); + calendar.set(Calendar.MINUTE, Integer.valueOf(String.valueOf(timeBucket).substring(10, 12))); + return calendar.getTimeInMillis(); + } else { + throw new UnexpectedException("time bucket type must be second or minute"); + } + } + + public long[] getFiveSecondTimeBuckets(long secondTimeBucket) { + long timeStamp = changeTimeBucket2TimeStamp(TimeBucketType.SECOND.name(), secondTimeBucket); + Calendar calendar = Calendar.getInstance(); + calendar.setTimeInMillis(timeStamp); + + long[] timeBuckets = new long[5]; + timeBuckets[0] = secondTimeBucket; + for (int i = 0; i < 4; i++) { + calendar.add(Calendar.SECOND, -1); + timeBuckets[i + 1] = getSecondTimeBucket(calendar.getTimeInMillis()); + } + return timeBuckets; + } + + public long changeToUTCTimeBucket(long timeBucket) { + String timeBucketStr = String.valueOf(timeBucket); + + if (TimeZone.getDefault().getID().equals("GMT+08:00") || timeBucketStr.endsWith("0000")) { + return timeBucket; + } else { + return timeBucket - 800; + } + } + + public long addSecondForSecondTimeBucket(String timeBucketType, long timeBucket, int second) { + if (!TimeBucketType.SECOND.name().equals(timeBucketType)) { + throw new UnexpectedException("time bucket type must be second "); + } + Calendar calendar = Calendar.getInstance(); + calendar.setTimeInMillis(changeTimeBucket2TimeStamp(timeBucketType, timeBucket)); + calendar.add(Calendar.SECOND, second); + + return getSecondTimeBucket(calendar.getTimeInMillis()); + } + + public enum TimeBucketType { + SECOND, MINUTE, HOUR, DAY + } +} diff --git a/apm-collector/apm-collector-naming/collector-naming-jetty-provider/pom.xml b/apm-collector/apm-collector-naming/collector-naming-jetty-provider/pom.xml index 27c92d949..d3131101c 100644 --- a/apm-collector/apm-collector-naming/collector-naming-jetty-provider/pom.xml +++ b/apm-collector/apm-collector-naming/collector-naming-jetty-provider/pom.xml @@ -41,5 +41,10 @@ collector-cluster-define ${project.version} + + org.skywalking + server-component + ${project.version} + \ No newline at end of file diff --git a/apm-collector/apm-collector-naming/collector-naming-jetty-provider/src/main/java/org/skywalking/apm/collector/naming/jetty/handler/AgentGRPCNamingHandler.java b/apm-collector/apm-collector-naming/collector-naming-jetty-provider/src/main/java/org/skywalking/apm/collector/naming/jetty/handler/AgentGRPCNamingHandler.java new file mode 100644 index 000000000..746945c3f --- /dev/null +++ b/apm-collector/apm-collector-naming/collector-naming-jetty-provider/src/main/java/org/skywalking/apm/collector/naming/jetty/handler/AgentGRPCNamingHandler.java @@ -0,0 +1,48 @@ +/* + * 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 + */ + +package org.skywalking.apm.collector.naming.jetty.handler; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import javax.servlet.http.HttpServletRequest; +import org.skywalking.apm.collector.server.jetty.ArgumentsParseException; +import org.skywalking.apm.collector.server.jetty.JettyHandler; + +/** + * @author peng-yongsheng + */ +public class AgentGRPCNamingHandler extends JettyHandler { + + @Override public String pathSpec() { + return "/agentstream/grpc"; + } + + @Override protected JsonElement doGet(HttpServletRequest req) throws ArgumentsParseException { +// ModuleManager +// ClusterModuleRegistrationReader reader = CollectorContextHelper.INSTANCE.getClusterModuleContext().getReader(); +// Set servers = reader.read(AgentStreamGRPCDataListener.PATH); + JsonArray serverArray = new JsonArray(); +// servers.forEach(serverArray::add); + return serverArray; + } + + @Override protected JsonElement doPost(HttpServletRequest req) throws ArgumentsParseException { + throw new UnsupportedOperationException(); + } +} diff --git a/apm-collector/apm-collector-naming/collector-naming-jetty-provider/src/main/java/org/skywalking/apm/collector/naming/jetty/handler/AgentJettyNamingHandler.java b/apm-collector/apm-collector-naming/collector-naming-jetty-provider/src/main/java/org/skywalking/apm/collector/naming/jetty/handler/AgentJettyNamingHandler.java new file mode 100644 index 000000000..6470335d2 --- /dev/null +++ b/apm-collector/apm-collector-naming/collector-naming-jetty-provider/src/main/java/org/skywalking/apm/collector/naming/jetty/handler/AgentJettyNamingHandler.java @@ -0,0 +1,47 @@ +/* + * 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 + */ + +package org.skywalking.apm.collector.naming.jetty.handler; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import javax.servlet.http.HttpServletRequest; +import org.skywalking.apm.collector.server.jetty.ArgumentsParseException; +import org.skywalking.apm.collector.server.jetty.JettyHandler; + +/** + * @author peng-yongsheng + */ +public class AgentJettyNamingHandler extends JettyHandler { + + @Override public String pathSpec() { + return "/agentstream/jetty"; + } + + @Override protected JsonElement doGet(HttpServletRequest req) throws ArgumentsParseException { +// ClusterModuleRegistrationReader reader = CollectorContextHelper.INSTANCE.getClusterModuleContext().getReader(); +// Set servers = reader.read(AgentStreamJettyDataListener.PATH); + JsonArray serverArray = new JsonArray(); +// servers.forEach(serverArray::add); + return serverArray; + } + + @Override protected JsonElement doPost(HttpServletRequest req) throws ArgumentsParseException { + throw new UnsupportedOperationException(); + } +} diff --git a/apm-collector/apm-collector-naming/collector-naming-jetty-provider/src/main/java/org/skywalking/apm/collector/naming/jetty/handler/UIJettyNamingHandler.java b/apm-collector/apm-collector-naming/collector-naming-jetty-provider/src/main/java/org/skywalking/apm/collector/naming/jetty/handler/UIJettyNamingHandler.java new file mode 100644 index 000000000..2171b477c --- /dev/null +++ b/apm-collector/apm-collector-naming/collector-naming-jetty-provider/src/main/java/org/skywalking/apm/collector/naming/jetty/handler/UIJettyNamingHandler.java @@ -0,0 +1,47 @@ +/* + * 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 + */ + +package org.skywalking.apm.collector.naming.jetty.handler; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import javax.servlet.http.HttpServletRequest; +import org.skywalking.apm.collector.server.jetty.ArgumentsParseException; +import org.skywalking.apm.collector.server.jetty.JettyHandler; + +/** + * @author peng-yongsheng + */ +public class UIJettyNamingHandler extends JettyHandler { + + @Override public String pathSpec() { + return "/ui/jetty"; + } + + @Override protected JsonElement doGet(HttpServletRequest req) throws ArgumentsParseException { +// ClusterModuleRegistrationReader reader = CollectorContextHelper.INSTANCE.getClusterModuleContext().getReader(); +// Set servers = reader.read(UIJettyDataListener.PATH); + JsonArray serverArray = new JsonArray(); +// servers.forEach(serverArray::add); + return serverArray; + } + + @Override protected JsonElement doPost(HttpServletRequest req) throws ArgumentsParseException { + throw new UnsupportedOperationException(); + } +}