blob: 33d0e22baa4c166400fed493297d84dc0b3cfb59 [file] [log] [blame]
/*
* 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.servicecomb.demo.zeroconfig.client;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import javax.ws.rs.core.MediaType;
import org.apache.servicecomb.provider.pojo.RpcReference;
import org.apache.servicecomb.provider.rest.common.RestSchema;
import org.apache.servicecomb.registry.DiscoveryManager;
import org.apache.servicecomb.registry.api.registry.Microservice;
import org.apache.servicecomb.swagger.extend.annotations.RawJsonRequestBody;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import io.vertx.core.json.JsonObject;
@RestSchema(schemaId = "ClientServerEndpoint")
@RequestMapping(path = "/register/url/prefix", produces = MediaType.APPLICATION_JSON)
public class ClientServerEndpoint {
private static final Logger LOGGER
= LoggerFactory.getLogger(ClientServerEndpoint.class);
@RpcReference(microserviceName = "demo-zeroconfig-schemadiscovery-registry-server", schemaId = "ServerEndpoint")
private IServerEndpoint serverEndpoint;
@RpcReference(microserviceName = "demo-zeroconfig-schemadiscovery-registry-server", schemaId = "RpcEndpoint")
private IRpcEndpoint rpcEndpoint;
@GetMapping(path = "/getName")
public String getName(@RequestParam(name = "name") String name) {
return serverEndpoint.getName(name);
}
@GetMapping(path = "/getRegisteredMicroservice")
public Set<String> getRegisteredMicroservice() {
List<Microservice> microserviceList = DiscoveryManager.INSTANCE.getAllMicroservices();
Set<String> names = new HashSet<>();
for (Microservice m : microserviceList) {
if (m.getServiceName().equals("demo-zeroconfig-schemadiscovery-registry-client")
|| m.getServiceName().equals("demo-zeroconfig-schemadiscovery-registry-server")) {
names.add(m.getServiceName());
}
}
return names;
}
@PostMapping(path = "/jsonObject")
public JsonObject jsonObject(@RequestBody JsonObject jsonObject) {
JsonObject param = new JsonObject();
param.put("map", jsonObject);
JsonObject message = rpcEndpoint.getJsonObject(param);
JsonObject inner = new JsonObject();
inner.put("map", message);
return inner;
}
@PostMapping(path = "/getString")
public String getString(@RawJsonRequestBody String jsonString) {
return jsonString;
}
}