Skip to content

Commit

Permalink
Merge 99ebf87 into e1671b4
Browse files Browse the repository at this point in the history
  • Loading branch information
heyile committed Aug 11, 2018
2 parents e1671b4 + 99ebf87 commit b7e9a6d
Show file tree
Hide file tree
Showing 29 changed files with 145 additions and 304 deletions.
Expand Up @@ -20,34 +20,24 @@
import java.util.HashMap;
import java.util.Map;

import javax.inject.Inject;

import org.apache.servicecomb.common.rest.locator.ServicePathManager;
import org.apache.servicecomb.core.BootListener;
import org.apache.servicecomb.core.SCBEngine;
import org.apache.servicecomb.core.definition.MicroserviceMeta;
import org.apache.servicecomb.core.definition.MicroserviceMetaManager;
import org.apache.servicecomb.core.definition.SchemaMeta;
import org.apache.servicecomb.core.definition.loader.SchemaListener;
import org.apache.servicecomb.serviceregistry.RegistryUtils;
import org.springframework.stereotype.Component;

@Component
public class RestEngineSchemaListener implements SchemaListener, BootListener {
private MicroserviceMetaManager microserviceMetaManager;

@Inject
public void setMicroserviceMetaManager(MicroserviceMetaManager microserviceMetaManager) {
this.microserviceMetaManager = microserviceMetaManager;
}

@Override
public void onBootEvent(BootEvent event) {
if (!event.getEventType().equals(EventType.BEFORE_REGISTRY)) {
return;
}

MicroserviceMeta microserviceMeta =
microserviceMetaManager.getOrCreateMicroserviceMeta(RegistryUtils.getMicroservice());
MicroserviceMeta microserviceMeta = SCBEngine.getInstance().getProducerMicroserviceMeta();
ServicePathManager servicePathManager = ServicePathManager.getServicePathManager(microserviceMeta);
if (servicePathManager != null) {
servicePathManager.buildProducerPaths();
Expand Down
Expand Up @@ -22,14 +22,12 @@
import org.apache.servicecomb.common.rest.filter.HttpServerFilter;
import org.apache.servicecomb.common.rest.locator.OperationLocator;
import org.apache.servicecomb.common.rest.locator.ServicePathManager;
import org.apache.servicecomb.core.Const;
import org.apache.servicecomb.core.CseContext;
import org.apache.servicecomb.core.SCBEngine;
import org.apache.servicecomb.core.Transport;
import org.apache.servicecomb.core.definition.MicroserviceMeta;
import org.apache.servicecomb.core.invocation.InvocationFactory;
import org.apache.servicecomb.foundation.vertx.http.HttpServletRequestEx;
import org.apache.servicecomb.foundation.vertx.http.HttpServletResponseEx;
import org.apache.servicecomb.serviceregistry.RegistryUtils;
import org.apache.servicecomb.swagger.invocation.exception.InvocationException;

public class RestProducerInvocation extends AbstractRestInvocation {
Expand All @@ -54,13 +52,7 @@ public void invoke(Transport transport, HttpServletRequestEx requestEx, HttpServ
}

protected void findRestOperation() {
String targetMicroserviceName = requestEx.getHeader(Const.TARGET_MICROSERVICE);
if (targetMicroserviceName == null) {
// for compatible
targetMicroserviceName = RegistryUtils.getMicroservice().getServiceName();
}
MicroserviceMeta selfMicroserviceMeta =
CseContext.getInstance().getMicroserviceMetaManager().ensureFindValue(targetMicroserviceName);
MicroserviceMeta selfMicroserviceMeta = SCBEngine.getInstance().getProducerMicroserviceMeta();
findRestOperation(selfMicroserviceMeta);
}

Expand Down
Expand Up @@ -39,7 +39,6 @@
import org.apache.servicecomb.core.SCBEngine;
import org.apache.servicecomb.core.SCBStatus;
import org.apache.servicecomb.core.definition.MicroserviceMeta;
import org.apache.servicecomb.core.definition.MicroserviceMetaManager;
import org.apache.servicecomb.core.definition.OperationMeta;
import org.apache.servicecomb.core.definition.SchemaMeta;
import org.apache.servicecomb.core.event.InvocationFinishEvent;
Expand Down Expand Up @@ -86,9 +85,6 @@ public class TestAbstractRestInvocation {
@Mocked
ReferenceConfig endpoint;

@Mocked
MicroserviceMetaManager microserviceMetaManager;

@Mocked
SchemaMeta schemaMeta;

Expand Down Expand Up @@ -691,8 +687,6 @@ public void findRestOperationServicePathManagerNull(@Mocked MicroserviceMeta mic
{
requestEx.getHeader(Const.TARGET_MICROSERVICE);
result = "ms";
microserviceMetaManager.ensureFindValue("ms");
result = microserviceMeta;
ServicePathManager.getServicePathManager(microserviceMeta);
result = null;
}
Expand Down
Expand Up @@ -27,10 +27,9 @@
import org.apache.servicecomb.common.rest.locator.OperationLocator;
import org.apache.servicecomb.common.rest.locator.ServicePathManager;
import org.apache.servicecomb.core.Const;
import org.apache.servicecomb.core.CseContext;
import org.apache.servicecomb.core.SCBEngine;
import org.apache.servicecomb.core.Transport;
import org.apache.servicecomb.core.definition.MicroserviceMeta;
import org.apache.servicecomb.core.definition.MicroserviceMetaManager;
import org.apache.servicecomb.foundation.vertx.http.AbstractHttpServletRequest;
import org.apache.servicecomb.foundation.vertx.http.HttpServletRequestEx;
import org.apache.servicecomb.foundation.vertx.http.HttpServletResponseEx;
Expand Down Expand Up @@ -63,7 +62,7 @@ public class TestRestProducerInvocation {
RestOperationMeta restOperationMeta;

@Mocked
MicroserviceMetaManager microserviceMetaManager;
MicroserviceMeta microserviceMeta;

List<HttpServerFilter> httpServerFilters = Collections.emptyList();

Expand All @@ -80,11 +79,6 @@ public class TestRestProducerInvocation {
@Rule
public ExpectedException expectedException = ExpectedException.none();

@Before
public void setup() {
CseContext.getInstance().setMicroserviceMetaManager(microserviceMetaManager);
}

private void initRestProducerInvocation() {
restProducerInvocation.transport = transport;
restProducerInvocation.requestEx = requestEx;
Expand All @@ -93,9 +87,14 @@ private void initRestProducerInvocation() {
restProducerInvocation.httpServerFilters = httpServerFilters;
}

@Before
public void setup() {
SCBEngine.getInstance().setProducerMicroserviceMeta(microserviceMeta);
}

@After
public void teardown() {
CseContext.getInstance().setMicroserviceMetaManager(null);
SCBEngine.getInstance().setProducerMicroserviceMeta(null);
}

@Test
Expand Down Expand Up @@ -149,28 +148,32 @@ public void findRestOperationNameFromRegistry() {
Microservice microservice = new Microservice();
microservice.setServiceName("ms");

Exception e = new Exception("stop");
new Expectations(RegistryUtils.class) {
{
requestEx.getHeader(Const.TARGET_MICROSERVICE);
result = null;
RegistryUtils.getMicroservice();
result = microservice;
microserviceMetaManager.ensureFindValue("ms");
result = e;
}
};
new Expectations(ServicePathManager.class) {
{
//just make the method throw Exception
ServicePathManager.getServicePathManager(microserviceMeta);
result = null;
}
};
restProducerInvocation = new RestProducerInvocation();
initRestProducerInvocation();

expectedException.expect(Exception.class);
expectedException.expectMessage("stop");
expectedException.expectMessage("[message=Not Found]");
restProducerInvocation.findRestOperation();
}

@Test
public void findRestOperationNormal(@Mocked MicroserviceMeta microserviceMeta,
@Mocked ServicePathManager servicePathManager, @Mocked OperationLocator locator) {
public void findRestOperationNormal(@Mocked ServicePathManager servicePathManager,
@Mocked OperationLocator locator) {
requestEx = new AbstractHttpServletRequest() {
@Override
public String getRequestURI() {
Expand All @@ -190,8 +193,6 @@ public String getHeader(String name) {
Map<String, String> pathVars = new HashMap<>();
new Expectations(ServicePathManager.class) {
{
microserviceMetaManager.ensureFindValue("ms");
result = microserviceMeta;
ServicePathManager.getServicePathManager(microserviceMeta);
result = servicePathManager;
servicePathManager.producerLocateOperation(anyString, anyString);
Expand Down
Expand Up @@ -17,6 +17,7 @@

package org.apache.servicecomb.core;

import org.apache.servicecomb.core.definition.MicroserviceMeta;
import org.apache.servicecomb.core.definition.loader.SchemaListenerManager;
import org.apache.servicecomb.core.provider.consumer.ConsumerProviderManager;
import org.apache.servicecomb.core.provider.producer.ProducerProviderManager;
Expand Down Expand Up @@ -64,6 +65,10 @@ public void onApplicationEvent(ApplicationEvent event) {
}

if (SCBEngine.getInstance().getBootListenerList() == null) {
//SCBEngine init first, hence we do not need worry that when other beans need use the
//producer microserviceMeta, the SCBEngine is not inited.
String serviceName = RegistryUtils.getMicroservice().getServiceName();
SCBEngine.getInstance().setProducerMicroserviceMeta(new MicroserviceMeta(serviceName));
SCBEngine.getInstance().setProducerProviderManager(applicationContext.getBean(ProducerProviderManager.class));
SCBEngine.getInstance().setConsumerProviderManager(applicationContext.getBean(ConsumerProviderManager.class));
SCBEngine.getInstance().setTransportManager(applicationContext.getBean(TransportManager.class));
Expand Down
12 changes: 0 additions & 12 deletions core/src/main/java/org/apache/servicecomb/core/CseContext.java
Expand Up @@ -19,7 +19,6 @@

import javax.inject.Inject;

import org.apache.servicecomb.core.definition.MicroserviceMetaManager;
import org.apache.servicecomb.core.definition.loader.SchemaListenerManager;
import org.apache.servicecomb.core.definition.loader.SchemaLoader;
import org.apache.servicecomb.core.definition.schema.ConsumerSchemaFactory;
Expand All @@ -39,8 +38,6 @@ public static CseContext getInstance() {

private SchemaLoader schemaLoader;

private MicroserviceMetaManager microserviceMetaManager;

private ConsumerSchemaFactory consumerSchemaFactory;

private ConsumerProviderManager consumerProviderManager;
Expand All @@ -59,10 +56,6 @@ public SchemaLoader getSchemaLoader() {
return schemaLoader;
}

public MicroserviceMetaManager getMicroserviceMetaManager() {
return microserviceMetaManager;
}

public ConsumerSchemaFactory getConsumerSchemaFactory() {
return consumerSchemaFactory;
}
Expand All @@ -88,11 +81,6 @@ public void setSwaggerEnvironment(SwaggerEnvironment swaggerEnvironment) {
this.swaggerEnvironment = swaggerEnvironment;
}

@Inject
public void setMicroserviceMetaManager(MicroserviceMetaManager microserviceMetaManager) {
this.microserviceMetaManager = microserviceMetaManager;
}

@Inject
public void setSchemaLoader(SchemaLoader schemaLoader) {
this.schemaLoader = schemaLoader;
Expand Down
12 changes: 12 additions & 0 deletions core/src/main/java/org/apache/servicecomb/core/SCBEngine.java
Expand Up @@ -23,6 +23,7 @@
import org.apache.servicecomb.config.ConfigUtil;
import org.apache.servicecomb.core.BootListener.BootEvent;
import org.apache.servicecomb.core.BootListener.EventType;
import org.apache.servicecomb.core.definition.MicroserviceMeta;
import org.apache.servicecomb.core.definition.loader.SchemaListenerManager;
import org.apache.servicecomb.core.endpoint.AbstractEndpointsCache;
import org.apache.servicecomb.core.event.InvocationFinishEvent;
Expand Down Expand Up @@ -52,6 +53,8 @@ public class SCBEngine {

private ConsumerProviderManager consumerProviderManager;

private MicroserviceMeta producerMicroserviceMeta;

private TransportManager transportManager;

private SchemaListenerManager schemaListenerManager;
Expand All @@ -64,6 +67,7 @@ public class SCBEngine {

private volatile SCBStatus status = SCBStatus.DOWN;


public void setStatus(SCBStatus status) {
this.status = status;
}
Expand Down Expand Up @@ -293,4 +297,12 @@ public ReferenceConfig getReferenceConfigForInvoke(String microserviceName) {

return consumerProviderManager.getReferenceConfig(microserviceName);
}

public MicroserviceMeta getProducerMicroserviceMeta() {
return producerMicroserviceMeta;
}

public void setProducerMicroserviceMeta(MicroserviceMeta producerMicroserviceMeta) {
this.producerMicroserviceMeta = producerMicroserviceMeta;
}
}

This file was deleted.

0 comments on commit b7e9a6d

Please sign in to comment.