You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by li...@apache.org on 2018/08/14 12:52:08 UTC
[incubator-servicecomb-java-chassis] 01/03: [SCB-612]delete useless
MicroserviceMetaManager
This is an automated email from the ASF dual-hosted git repository.
liubao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-java-chassis.git
commit 57f828e532cc927d258d03bbea6add4c4cae91d5
Author: heyile <he...@huawei.com>
AuthorDate: Wed Aug 8 09:56:33 2018 +0800
[SCB-612]delete useless MicroserviceMetaManager
---
.../common/rest/RestEngineSchemaListener.java | 14 +---
.../common/rest/RestProducerInvocation.java | 12 +---
.../common/rest/TestAbstractRestInvocation.java | 15 ++---
.../common/rest/TestRestProducerInvocation.java | 34 +++++-----
.../servicecomb/core/CseApplicationListener.java | 5 ++
.../org/apache/servicecomb/core/CseContext.java | 12 ----
.../org/apache/servicecomb/core/SCBEngine.java | 12 ++++
.../core/definition/MicroserviceMetaManager.java | 76 ----------------------
.../definition/loader/SchemaListenerManager.java | 37 ++++++-----
.../core/definition/loader/SchemaLoader.java | 20 +++---
.../definition/schema/AbstractSchemaFactory.java | 10 +--
.../definition/schema/ProducerSchemaFactory.java | 13 +++-
.../consumer/AbstractConsumerProvider.java | 5 --
.../provider/producer/ProducerProviderManager.java | 10 +--
.../servicecomb/core/unittest/UnitTestMeta.java | 22 +++----
.../apache/servicecomb/core/TestDefinition.java | 24 -------
.../definition/loader/TestDynamicSchemaLoader.java | 15 +++--
.../loader/TestSchemaListenerManager.java | 2 -
.../schema/TestProducerSchemaFactory.java | 25 +++----
.../producer/TestProducerProviderManager.java | 4 +-
.../springmvc/server/ProducerTestsAfterBootup.java | 10 +--
.../metrics/core/ThreadPoolMetersInitializer.java | 14 ++--
.../core/TestThreadPoolMetersInitializer.java | 16 ++---
.../servicecomb/provider/common/MockUtil.java | 2 -
.../transport/highway/HighwayServerInvoke.java | 11 +---
.../highway/TestHighwayServerConnection.java | 30 ++++-----
.../transport/highway/TestHighwayServerInvoke.java | 2 +-
27 files changed, 148 insertions(+), 304 deletions(-)
diff --git a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/RestEngineSchemaListener.java b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/RestEngineSchemaListener.java
index 8cc33a5..f9be1b9 100644
--- a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/RestEngineSchemaListener.java
+++ b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/RestEngineSchemaListener.java
@@ -20,25 +20,16 @@ package org.apache.servicecomb.common.rest;
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) {
@@ -46,8 +37,7 @@ public class RestEngineSchemaListener implements SchemaListener, BootListener {
return;
}
- MicroserviceMeta microserviceMeta =
- microserviceMetaManager.getOrCreateMicroserviceMeta(RegistryUtils.getMicroservice());
+ MicroserviceMeta microserviceMeta = SCBEngine.getInstance().getProducerMicroMeta();
ServicePathManager servicePathManager = ServicePathManager.getServicePathManager(microserviceMeta);
if (servicePathManager != null) {
servicePathManager.buildProducerPaths();
diff --git a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/RestProducerInvocation.java b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/RestProducerInvocation.java
index 673c684..f2fbee5 100644
--- a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/RestProducerInvocation.java
+++ b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/RestProducerInvocation.java
@@ -22,14 +22,12 @@ import java.util.List;
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 {
@@ -54,13 +52,7 @@ public class RestProducerInvocation extends AbstractRestInvocation {
}
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().getProducerMicroMeta();
findRestOperation(selfMicroserviceMeta);
}
diff --git a/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/TestAbstractRestInvocation.java b/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/TestAbstractRestInvocation.java
index cc0c2c0..30c993b 100644
--- a/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/TestAbstractRestInvocation.java
+++ b/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/TestAbstractRestInvocation.java
@@ -17,15 +17,14 @@
package org.apache.servicecomb.common.rest;
+import javax.ws.rs.core.Response.Status;
+import javax.xml.ws.Holder;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.Executor;
-import javax.ws.rs.core.Response.Status;
-import javax.xml.ws.Holder;
-
import org.apache.servicecomb.common.rest.codec.produce.ProduceProcessorManager;
import org.apache.servicecomb.common.rest.definition.RestOperationMeta;
import org.apache.servicecomb.common.rest.filter.HttpServerFilter;
@@ -39,7 +38,6 @@ import org.apache.servicecomb.core.Invocation;
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;
@@ -68,14 +66,14 @@ import org.junit.rules.ExpectedException;
import com.google.common.eventbus.EventBus;
import com.google.common.eventbus.Subscribe;
-
-import io.vertx.core.buffer.Buffer;
import mockit.Deencapsulation;
import mockit.Expectations;
import mockit.Mock;
import mockit.MockUp;
import mockit.Mocked;
+import io.vertx.core.buffer.Buffer;
+
public class TestAbstractRestInvocation {
@Mocked
HttpServletRequestEx requestEx;
@@ -87,9 +85,6 @@ public class TestAbstractRestInvocation {
ReferenceConfig endpoint;
@Mocked
- MicroserviceMetaManager microserviceMetaManager;
-
- @Mocked
SchemaMeta schemaMeta;
@Mocked
@@ -691,8 +686,6 @@ public class TestAbstractRestInvocation {
{
requestEx.getHeader(Const.TARGET_MICROSERVICE);
result = "ms";
- microserviceMetaManager.ensureFindValue("ms");
- result = microserviceMeta;
ServicePathManager.getServicePathManager(microserviceMeta);
result = null;
}
diff --git a/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/TestRestProducerInvocation.java b/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/TestRestProducerInvocation.java
index 60a503c..ec63b3b 100644
--- a/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/TestRestProducerInvocation.java
+++ b/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/TestRestProducerInvocation.java
@@ -28,9 +28,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;
@@ -63,7 +63,7 @@ public class TestRestProducerInvocation {
RestOperationMeta restOperationMeta;
@Mocked
- MicroserviceMetaManager microserviceMetaManager;
+ MicroserviceMeta microserviceMeta;
List<HttpServerFilter> httpServerFilters = Collections.emptyList();
@@ -80,11 +80,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;
@@ -93,9 +88,14 @@ public class TestRestProducerInvocation {
restProducerInvocation.httpServerFilters = httpServerFilters;
}
+ @Before
+ public void setup() {
+ SCBEngine.getInstance().setProducerMicroMeta(microserviceMeta);
+ }
+
@After
public void teardown() {
- CseContext.getInstance().setMicroserviceMetaManager(null);
+ SCBEngine.getInstance().setProducerMicroMeta(null);
}
@Test
@@ -149,28 +149,32 @@ public class TestRestProducerInvocation {
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() {
@@ -190,8 +194,6 @@ public class TestRestProducerInvocation {
Map<String, String> pathVars = new HashMap<>();
new Expectations(ServicePathManager.class) {
{
- microserviceMetaManager.ensureFindValue("ms");
- result = microserviceMeta;
ServicePathManager.getServicePathManager(microserviceMeta);
result = servicePathManager;
servicePathManager.producerLocateOperation(anyString, anyString);
diff --git a/core/src/main/java/org/apache/servicecomb/core/CseApplicationListener.java b/core/src/main/java/org/apache/servicecomb/core/CseApplicationListener.java
index 38793cd..3382789 100644
--- a/core/src/main/java/org/apache/servicecomb/core/CseApplicationListener.java
+++ b/core/src/main/java/org/apache/servicecomb/core/CseApplicationListener.java
@@ -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;
@@ -64,6 +65,10 @@ public class CseApplicationListener
}
if (SCBEngine.getInstance().getBootListenerList() == null) {
+ //SCBEngine init first, hence we do not worry that when other bean class using the
+ //producer microserviceMeta, the SCBEngine is not inited.
+ String serviceName = RegistryUtils.getMicroservice().getServiceName();
+ SCBEngine.getInstance().setProducerMicroMeta(new MicroserviceMeta(serviceName));
SCBEngine.getInstance().setProducerProviderManager(applicationContext.getBean(ProducerProviderManager.class));
SCBEngine.getInstance().setConsumerProviderManager(applicationContext.getBean(ConsumerProviderManager.class));
SCBEngine.getInstance().setTransportManager(applicationContext.getBean(TransportManager.class));
diff --git a/core/src/main/java/org/apache/servicecomb/core/CseContext.java b/core/src/main/java/org/apache/servicecomb/core/CseContext.java
index e372d0a..45b8415 100644
--- a/core/src/main/java/org/apache/servicecomb/core/CseContext.java
+++ b/core/src/main/java/org/apache/servicecomb/core/CseContext.java
@@ -19,7 +19,6 @@ package org.apache.servicecomb.core;
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;
@@ -39,8 +38,6 @@ public class CseContext {
private SchemaLoader schemaLoader;
- private MicroserviceMetaManager microserviceMetaManager;
-
private ConsumerSchemaFactory consumerSchemaFactory;
private ConsumerProviderManager consumerProviderManager;
@@ -59,10 +56,6 @@ public class CseContext {
return schemaLoader;
}
- public MicroserviceMetaManager getMicroserviceMetaManager() {
- return microserviceMetaManager;
- }
-
public ConsumerSchemaFactory getConsumerSchemaFactory() {
return consumerSchemaFactory;
}
@@ -89,11 +82,6 @@ public class CseContext {
}
@Inject
- public void setMicroserviceMetaManager(MicroserviceMetaManager microserviceMetaManager) {
- this.microserviceMetaManager = microserviceMetaManager;
- }
-
- @Inject
public void setSchemaLoader(SchemaLoader schemaLoader) {
this.schemaLoader = schemaLoader;
}
diff --git a/core/src/main/java/org/apache/servicecomb/core/SCBEngine.java b/core/src/main/java/org/apache/servicecomb/core/SCBEngine.java
index 6e0aefe..39dbd83 100644
--- a/core/src/main/java/org/apache/servicecomb/core/SCBEngine.java
+++ b/core/src/main/java/org/apache/servicecomb/core/SCBEngine.java
@@ -25,6 +25,7 @@ import javax.ws.rs.core.Response.Status;
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;
@@ -55,6 +56,8 @@ public class SCBEngine {
private ConsumerProviderManager consumerProviderManager;
+ private MicroserviceMeta producerMicroMeta;
+
private TransportManager transportManager;
private SchemaListenerManager schemaListenerManager;
@@ -67,6 +70,7 @@ public class SCBEngine {
private volatile SCBStatus status = SCBStatus.DOWN;
+
public void setStatus(SCBStatus status) {
this.status = status;
}
@@ -298,4 +302,12 @@ public class SCBEngine {
return consumerProviderManager.getReferenceConfig(microserviceName);
}
+
+ public MicroserviceMeta getProducerMicroMeta() {
+ return producerMicroMeta;
+ }
+
+ public void setProducerMicroMeta(MicroserviceMeta producerMicroMeta) {
+ this.producerMicroMeta = producerMicroMeta;
+ }
}
diff --git a/core/src/main/java/org/apache/servicecomb/core/definition/MicroserviceMetaManager.java b/core/src/main/java/org/apache/servicecomb/core/definition/MicroserviceMetaManager.java
deleted file mode 100644
index a6b0c2d..0000000
--- a/core/src/main/java/org/apache/servicecomb/core/definition/MicroserviceMetaManager.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * 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.core.definition;
-
-import java.util.Collection;
-
-import org.apache.commons.lang3.StringUtils;
-import org.apache.servicecomb.foundation.common.RegisterManager;
-import org.apache.servicecomb.serviceregistry.api.registry.Microservice;
-import org.springframework.stereotype.Component;
-
-/**
- * key为microserviceName(app内部)或者appId:microserviceName(跨app)
- */
-@Component
-public class MicroserviceMetaManager extends RegisterManager<String, MicroserviceMeta> {
- private static final String MICROSERVICE_SCHEMA_MGR = "microservice meta manager";
-
- private final Object lock = new Object();
-
- public MicroserviceMetaManager() {
- super(MICROSERVICE_SCHEMA_MGR);
- }
-
- public SchemaMeta ensureFindSchemaMeta(String microserviceName, String schemaId) {
- MicroserviceMeta microserviceMeta = ensureFindValue(microserviceName);
- return microserviceMeta.ensureFindSchemaMeta(schemaId);
- }
-
- public Collection<SchemaMeta> getAllSchemaMeta(String microserviceName) {
- MicroserviceMeta microserviceMeta = ensureFindValue(microserviceName);
- return microserviceMeta.getSchemaMetas();
- }
-
- public MicroserviceMeta getOrCreateMicroserviceMeta(Microservice microservice) {
- String microserviceName = microservice.getServiceName();
- MicroserviceMeta microserviceMeta = getOrCreateMicroserviceMeta(microserviceName);
- if (!StringUtils.isEmpty(microservice.getAlias())) {
- if (findValue(microservice.getAlias()) == null) {
- register(microservice.getAlias(), microserviceMeta);
- }
- }
-
- return microserviceMeta;
- }
-
- public MicroserviceMeta getOrCreateMicroserviceMeta(String microserviceName) {
- MicroserviceMeta microserviceMeta = findValue(microserviceName);
- if (microserviceMeta == null) {
- synchronized (lock) {
- microserviceMeta = findValue(microserviceName);
- if (microserviceMeta == null) {
- microserviceMeta = new MicroserviceMeta(microserviceName);
- register(microserviceName, microserviceMeta);
- }
- }
- }
-
- return microserviceMeta;
- }
-}
diff --git a/core/src/main/java/org/apache/servicecomb/core/definition/loader/SchemaListenerManager.java b/core/src/main/java/org/apache/servicecomb/core/definition/loader/SchemaListenerManager.java
index 65e9bd4..83e93f3 100644
--- a/core/src/main/java/org/apache/servicecomb/core/definition/loader/SchemaListenerManager.java
+++ b/core/src/main/java/org/apache/servicecomb/core/definition/loader/SchemaListenerManager.java
@@ -21,11 +21,12 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
-import javax.inject.Inject;
-
+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.serviceregistry.RegistryUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@@ -34,32 +35,28 @@ import org.springframework.stereotype.Component;
*/
@Component
public class SchemaListenerManager {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(SchemaListenerManager.class);
+
@Autowired(required = false)
private List<SchemaListener> schemaListenerList = new ArrayList<>();
- @Inject
- private MicroserviceMetaManager microserviceMetaManager;
-
public void setSchemaListenerList(List<SchemaListener> schemaListenerList) {
this.schemaListenerList = schemaListenerList;
}
- public void setMicroserviceMetaManager(MicroserviceMetaManager microserviceMetaManager) {
- this.microserviceMetaManager = microserviceMetaManager;
- }
-
public void notifySchemaListener(MicroserviceMeta... microserviceMetas) {
List<SchemaMeta> schemaMetaList = new ArrayList<>();
for (MicroserviceMeta microserviceMeta : microserviceMetas) {
schemaMetaList.addAll(microserviceMeta.getSchemaMetas());
}
-
notifySchemaListener(schemaMetaList.toArray(new SchemaMeta[schemaMetaList.size()]));
}
public void notifySchemaListener() {
- Collection<MicroserviceMeta> microserviceMetas = microserviceMetaManager.values();
- notifySchemaListener(microserviceMetas.toArray(new MicroserviceMeta[microserviceMetas.size()]));
+ //only one instance
+ MicroserviceMeta microserviceMeta = SCBEngine.getInstance().getProducerMicroMeta();
+ notifySchemaListener(microserviceMeta);
}
public void notifySchemaListener(SchemaMeta... schemaMetas) {
@@ -74,12 +71,22 @@ public class SchemaListenerManager {
}
public SchemaMeta ensureFindSchemaMeta(String microserviceName, String schemaId) {
- MicroserviceMeta microserviceMeta = microserviceMetaManager.ensureFindValue(microserviceName);
+ if (!RegistryUtils.getMicroservice().getServiceName().equals(microserviceName)) {
+ LOGGER.error("miroserviceName : {} is different from the default microserviceName :{}",
+ microserviceName,
+ RegistryUtils.getMicroservice().getServiceName());
+ }
+ MicroserviceMeta microserviceMeta = SCBEngine.getInstance().getProducerMicroMeta();
return microserviceMeta.ensureFindSchemaMeta(schemaId);
}
public Collection<SchemaMeta> getAllSchemaMeta(String microserviceName) {
- MicroserviceMeta microserviceMeta = microserviceMetaManager.ensureFindValue(microserviceName);
+ if (!RegistryUtils.getMicroservice().getServiceName().equals(microserviceName)) {
+ LOGGER.error("miroserviceName : {} is different from the default microserviceName :{}",
+ microserviceName,
+ RegistryUtils.getMicroservice().getServiceName());
+ }
+ MicroserviceMeta microserviceMeta = SCBEngine.getInstance().getProducerMicroMeta();
return microserviceMeta.getSchemaMetas();
}
}
diff --git a/core/src/main/java/org/apache/servicecomb/core/definition/loader/SchemaLoader.java b/core/src/main/java/org/apache/servicecomb/core/definition/loader/SchemaLoader.java
index aa612c3..40e1d68 100644
--- a/core/src/main/java/org/apache/servicecomb/core/definition/loader/SchemaLoader.java
+++ b/core/src/main/java/org/apache/servicecomb/core/definition/loader/SchemaLoader.java
@@ -19,13 +19,11 @@ package org.apache.servicecomb.core.definition.loader;
import java.util.List;
-import javax.inject.Inject;
-
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.io.IOUtils;
import org.apache.servicecomb.core.Handler;
+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.SchemaUtils;
import org.apache.servicecomb.core.handler.ConsumerHandlerManager;
@@ -48,13 +46,6 @@ import io.swagger.models.Swagger;
public class SchemaLoader {
private static final Logger LOGGER = LoggerFactory.getLogger(SchemaLoader.class);
- @Inject
- protected MicroserviceMetaManager microserviceMetaManager;
-
- public void setMicroserviceMetaManager(MicroserviceMetaManager microserviceMetaManager) {
- this.microserviceMetaManager = microserviceMetaManager;
- }
-
/*
* resource的路径格式,至少是以这个形式结尾:schemaId.yaml
*/
@@ -82,8 +73,13 @@ public class SchemaLoader {
public SchemaMeta registerSchema(String microserviceName, String schemaId,
Swagger swagger) {
- MicroserviceMeta microserviceMeta = microserviceMetaManager.getOrCreateMicroserviceMeta(microserviceName);
-
+ //check whether the microserviceName is right
+ if (!RegistryUtils.getMicroservice().getServiceName().equals(microserviceName)) {
+ LOGGER.error("miroserviceName : {} is different from the default microserviceName :{}",
+ microserviceName,
+ RegistryUtils.getMicroservice().getServiceName());
+ }
+ MicroserviceMeta microserviceMeta = SCBEngine.getInstance().getProducerMicroMeta();
return registerSchema(microserviceMeta, schemaId, swagger);
}
diff --git a/core/src/main/java/org/apache/servicecomb/core/definition/schema/AbstractSchemaFactory.java b/core/src/main/java/org/apache/servicecomb/core/definition/schema/AbstractSchemaFactory.java
index 9d62c52..bf2336d 100644
--- a/core/src/main/java/org/apache/servicecomb/core/definition/schema/AbstractSchemaFactory.java
+++ b/core/src/main/java/org/apache/servicecomb/core/definition/schema/AbstractSchemaFactory.java
@@ -17,12 +17,10 @@
package org.apache.servicecomb.core.definition.schema;
-import java.net.URL;
-
import javax.inject.Inject;
+import java.net.URL;
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.SchemaUtils;
import org.apache.servicecomb.core.definition.loader.SchemaLoader;
@@ -40,8 +38,6 @@ import io.swagger.models.Swagger;
* 在producer场景中,如果本地没有契约,需要根据实现类动态生成契约
*/
public abstract class AbstractSchemaFactory<CONTEXT extends SchemaContext> {
- @Inject
- protected MicroserviceMetaManager microserviceMetaManager;
protected SchemaLoader schemaLoader;
@@ -53,10 +49,6 @@ public abstract class AbstractSchemaFactory<CONTEXT extends SchemaContext> {
this.schemaLoader = schemaLoader;
}
- public void setMicroserviceMetaManager(MicroserviceMetaManager microserviceMetaManager) {
- this.microserviceMetaManager = microserviceMetaManager;
- }
-
// 因为aop的存在,schemaInstance的class不一定等于schemaClass
protected SchemaMeta getOrCreateSchema(CONTEXT context) {
MicroserviceMeta microserviceMeta = context.getMicroserviceMeta();
diff --git a/core/src/main/java/org/apache/servicecomb/core/definition/schema/ProducerSchemaFactory.java b/core/src/main/java/org/apache/servicecomb/core/definition/schema/ProducerSchemaFactory.java
index 87e7cb2..d5b435f 100644
--- a/core/src/main/java/org/apache/servicecomb/core/definition/schema/ProducerSchemaFactory.java
+++ b/core/src/main/java/org/apache/servicecomb/core/definition/schema/ProducerSchemaFactory.java
@@ -20,15 +20,15 @@ package org.apache.servicecomb.core.definition.schema;
import static org.apache.servicecomb.serviceregistry.api.Const.REGISTER_URL_PREFIX;
import static org.apache.servicecomb.serviceregistry.api.Const.URL_PREFIX;
+import javax.inject.Inject;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.Executor;
-import javax.inject.Inject;
-
import org.apache.servicecomb.core.Const;
+import org.apache.servicecomb.core.SCBEngine;
import org.apache.servicecomb.core.definition.MicroserviceMeta;
import org.apache.servicecomb.core.definition.OperationMeta;
import org.apache.servicecomb.core.definition.SchemaMeta;
@@ -77,7 +77,14 @@ public class ProducerSchemaFactory extends AbstractSchemaFactory<ProducerSchemaC
public SchemaMeta getOrCreateProducerSchema(String microserviceName, String schemaId,
Class<?> producerClass,
Object producerInstance) {
- MicroserviceMeta microserviceMeta = microserviceMetaManager.getOrCreateMicroserviceMeta(microserviceName);
+
+ if (!RegistryUtils.getMicroservice().getServiceName().equals(microserviceName)) {
+ LOGGER.error("miroserviceName : {} is different from the default microserviceName :{}",
+ microserviceName,
+ RegistryUtils.getMicroservice().getServiceName());
+ }
+
+ MicroserviceMeta microserviceMeta = SCBEngine.getInstance().getProducerMicroMeta();
ProducerSchemaContext context = new ProducerSchemaContext();
context.setMicroserviceMeta(microserviceMeta);
diff --git a/core/src/main/java/org/apache/servicecomb/core/provider/consumer/AbstractConsumerProvider.java b/core/src/main/java/org/apache/servicecomb/core/provider/consumer/AbstractConsumerProvider.java
index 1493d59..2c7b2ff 100644
--- a/core/src/main/java/org/apache/servicecomb/core/provider/consumer/AbstractConsumerProvider.java
+++ b/core/src/main/java/org/apache/servicecomb/core/provider/consumer/AbstractConsumerProvider.java
@@ -17,14 +17,9 @@
package org.apache.servicecomb.core.provider.consumer;
-import javax.inject.Inject;
-
import org.apache.servicecomb.core.ConsumerProvider;
-import org.apache.servicecomb.core.definition.MicroserviceMetaManager;
public abstract class AbstractConsumerProvider implements ConsumerProvider {
- @Inject
- protected MicroserviceMetaManager microserviceMetaManager;
@Override
public void init() throws Exception {
diff --git a/core/src/main/java/org/apache/servicecomb/core/provider/producer/ProducerProviderManager.java b/core/src/main/java/org/apache/servicecomb/core/provider/producer/ProducerProviderManager.java
index b9b6b41..740f693 100644
--- a/core/src/main/java/org/apache/servicecomb/core/provider/producer/ProducerProviderManager.java
+++ b/core/src/main/java/org/apache/servicecomb/core/provider/producer/ProducerProviderManager.java
@@ -22,13 +22,11 @@ import java.util.Collections;
import java.util.List;
import java.util.concurrent.ExecutorService;
-import javax.inject.Inject;
-
import org.apache.commons.io.IOUtils;
import org.apache.servicecomb.core.BootListener;
import org.apache.servicecomb.core.ProducerProvider;
+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.OperationMeta;
import org.apache.servicecomb.core.definition.SchemaMeta;
import org.apache.servicecomb.core.definition.SchemaUtils;
@@ -46,18 +44,14 @@ public class ProducerProviderManager implements BootListener {
@Autowired(required = false)
private List<ProducerProvider> producerProviderList = Collections.emptyList();
- @Inject
- private MicroserviceMetaManager microserviceMetaManager;
-
private MicroserviceMeta microserviceMeta;
public void init() throws Exception {
for (ProducerProvider provider : producerProviderList) {
provider.init();
}
-
Microservice microservice = RegistryUtils.getMicroservice();
- microserviceMeta = microserviceMetaManager.getOrCreateMicroserviceMeta(microservice);
+ microserviceMeta = SCBEngine.getInstance().getProducerMicroMeta();
for (SchemaMeta schemaMeta : microserviceMeta.getSchemaMetas()) {
String content = SchemaUtils.swaggerToString(schemaMeta.getSwagger());
microservice.addSchema(schemaMeta.getSchemaId(), content);
diff --git a/core/src/main/java/org/apache/servicecomb/core/unittest/UnitTestMeta.java b/core/src/main/java/org/apache/servicecomb/core/unittest/UnitTestMeta.java
index 8d9c5b5..f285f73 100644
--- a/core/src/main/java/org/apache/servicecomb/core/unittest/UnitTestMeta.java
+++ b/core/src/main/java/org/apache/servicecomb/core/unittest/UnitTestMeta.java
@@ -22,8 +22,8 @@ import java.util.List;
import org.apache.servicecomb.core.CseContext;
import org.apache.servicecomb.core.Handler;
+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.PrivateMicroserviceVersionMetaFactory;
import org.apache.servicecomb.core.definition.SchemaMeta;
import org.apache.servicecomb.core.definition.loader.SchemaListenerManager;
@@ -47,15 +47,15 @@ import org.apache.servicecomb.swagger.generator.core.unittest.UnitTestSwaggerUti
import org.mockito.Mockito;
import org.springframework.context.ApplicationContext;
-import io.swagger.models.Swagger;
import mockit.Mock;
import mockit.MockUp;
+import io.swagger.models.Swagger;
+
/**
* when SCBEngine finished, UnitTestMeta will be deleted
*/
public class UnitTestMeta {
- private MicroserviceMetaManager microserviceMetaManager = new MicroserviceMetaManager();
private SchemaListenerManager schemaListenerManager = new SchemaListenerManager();
@@ -69,6 +69,8 @@ public class UnitTestMeta {
private SchemaLoader schemaLoader = new SchemaLoader();
+ private MicroserviceMeta microserviceMeta;
+
private ServiceRegistry serviceRegistry;
public ServiceRegistry getServiceRegistry() {
@@ -85,13 +87,12 @@ public class UnitTestMeta {
serviceRegistry.init();
serviceRegistry.getAppManager().setMicroserviceVersionFactory(new PrivateMicroserviceVersionMetaFactory());
RegistryUtils.setServiceRegistry(serviceRegistry);
-
- schemaLoader.setMicroserviceMetaManager(microserviceMetaManager);
-
+ microserviceMeta = new MicroserviceMeta(RegistryUtils.getMicroservice().getServiceName());
+ SCBEngine.getInstance().setProducerMicroMeta(microserviceMeta);
consumerProviderManager = new ConsumerProviderManager();
consumerSchemaFactory = new ConsumerSchemaFactory();
- consumerSchemaFactory.setMicroserviceMetaManager(microserviceMetaManager);
+
consumerSchemaFactory.setSchemaLoader(schemaLoader);
consumerProviderManager.setAppManager(RegistryUtils.getServiceRegistry().getAppManager());
@@ -128,18 +129,13 @@ public class UnitTestMeta {
init();
}
-
- public MicroserviceMetaManager getMicroserviceMetaManager() {
- return microserviceMetaManager;
- }
-
public SchemaMeta getOrCreateSchemaMeta(Class<?> impl) {
return getOrCreateSchemaMeta("app", "test", impl.getName(), impl);
}
public SchemaMeta getOrCreateSchemaMeta(String appId, String microserviceName, String schemaId, Class<?> impl) {
String longName = appId + ":" + microserviceName;
- MicroserviceMeta microserviceMeta = microserviceMetaManager.getOrCreateMicroserviceMeta(longName);
+ MicroserviceMeta microserviceMeta = SCBEngine.getInstance().getProducerMicroMeta();
SchemaMeta schemaMeta = microserviceMeta.findSchemaMeta(schemaId);
if (schemaMeta != null) {
return schemaMeta;
diff --git a/core/src/test/java/org/apache/servicecomb/core/TestDefinition.java b/core/src/test/java/org/apache/servicecomb/core/TestDefinition.java
index 9f91589..3416048 100644
--- a/core/src/test/java/org/apache/servicecomb/core/TestDefinition.java
+++ b/core/src/test/java/org/apache/servicecomb/core/TestDefinition.java
@@ -19,14 +19,9 @@ package org.apache.servicecomb.core;
import org.apache.servicecomb.core.definition.CommonService;
import org.apache.servicecomb.core.definition.MicroserviceMeta;
-import org.apache.servicecomb.core.definition.MicroserviceMetaManager;
-import org.apache.servicecomb.swagger.generator.core.utils.ClassUtils;
import org.junit.Assert;
import org.junit.Test;
-import io.swagger.models.Info;
-import io.swagger.models.Swagger;
-
public class TestDefinition {
@Test
public void testCommonService() {
@@ -68,23 +63,4 @@ public class TestDefinition {
Assert.assertNotNull(e);
}
}
-
- @Test
- public void testMicroserviceMetaManager() throws Exception {
- MicroserviceMetaManager microserviceMetaManager = new MicroserviceMetaManager();
- microserviceMetaManager.getOrCreateMicroserviceMeta("app:testname");
-
- Assert.assertEquals("microservice meta manager", microserviceMetaManager.getName());
- Assert.assertEquals("Not allow register repeat data, name=%s, key=%s",
- microserviceMetaManager.getRegisterErrorFmt());
- Assert.assertEquals(0, microserviceMetaManager.getAllSchemaMeta("app:testname").size());
-
- Swagger oSwagger = new Swagger();
- Info oInfo = new Info();
- oInfo.setVendorExtension("x-java-interface", "java.lang.String");
- oSwagger.setInfo(oInfo);
- Assert.assertEquals("java.lang.String",
- (ClassUtils.getInterfaceName(oSwagger.getInfo().getVendorExtensions())));
- oInfo.setVendorExtension("x-java-class", "java.lang.String");
- }
}
diff --git a/core/src/test/java/org/apache/servicecomb/core/definition/loader/TestDynamicSchemaLoader.java b/core/src/test/java/org/apache/servicecomb/core/definition/loader/TestDynamicSchemaLoader.java
index c7f0b4a..2ed4fae 100644
--- a/core/src/test/java/org/apache/servicecomb/core/definition/loader/TestDynamicSchemaLoader.java
+++ b/core/src/test/java/org/apache/servicecomb/core/definition/loader/TestDynamicSchemaLoader.java
@@ -20,7 +20,7 @@ import java.util.ArrayList;
import java.util.Collections;
import org.apache.servicecomb.core.CseContext;
-import org.apache.servicecomb.core.definition.MicroserviceMetaManager;
+import org.apache.servicecomb.core.SCBEngine;
import org.apache.servicecomb.core.definition.SchemaMeta;
import org.apache.servicecomb.core.unittest.UnitTestMeta;
import org.apache.servicecomb.serviceregistry.RegistryUtils;
@@ -35,7 +35,6 @@ import org.junit.BeforeClass;
import org.junit.Test;
public class TestDynamicSchemaLoader {
- private static MicroserviceMetaManager microserviceMetaManager = new MicroserviceMetaManager();
private static SchemaLoader loader = new SchemaLoader();
@@ -44,7 +43,6 @@ public class TestDynamicSchemaLoader {
@BeforeClass
public static void init() {
new UnitTestMeta();
- loader.setMicroserviceMetaManager(microserviceMetaManager);
SchemaListenerManager schemaListenerManager = new SchemaListenerManager();
schemaListenerManager.setSchemaListenerList(Collections.emptyList());
@@ -69,16 +67,21 @@ public class TestDynamicSchemaLoader {
@Test
public void testRegisterSchemas() {
DynamicSchemaLoader.INSTANCE.registerSchemas("classpath*:test/test/schema.yaml");
- SchemaMeta schemaMeta = microserviceMetaManager.ensureFindSchemaMeta("perfClient", "schema");
+ SchemaMeta schemaMeta = SCBEngine.getInstance().getProducerMicroMeta().ensureFindSchemaMeta("schema");
Assert.assertEquals("cse.gen.app.perfClient.schema", schemaMeta.getPackageName());
}
@SuppressWarnings("deprecation")
@Test
public void testRegisterShemasAcrossApp() {
+ //we can not register repeat data
+ init();
+ //as we can not set microserviceName any more, hence we should use the default name
DynamicSchemaLoader.INSTANCE.registerSchemas("CSE:as", "classpath*:test/test/schema.yaml");
- SchemaMeta schemaMeta = microserviceMetaManager.ensureFindSchemaMeta("CSE:as", "schema");
- Assert.assertEquals("cse.gen.CSE.as.schema", schemaMeta.getPackageName());
+ SchemaMeta schemaMeta =
+ SCBEngine.getInstance().getProducerMicroMeta().ensureFindSchemaMeta("schema");
+ System.out.println(schemaMeta.getPackageName());
+ Assert.assertEquals("cse.gen.app.perfClient.schema", schemaMeta.getPackageName());
}
@Test
diff --git a/core/src/test/java/org/apache/servicecomb/core/definition/loader/TestSchemaListenerManager.java b/core/src/test/java/org/apache/servicecomb/core/definition/loader/TestSchemaListenerManager.java
index f32adff..445cf1a 100644
--- a/core/src/test/java/org/apache/servicecomb/core/definition/loader/TestSchemaListenerManager.java
+++ b/core/src/test/java/org/apache/servicecomb/core/definition/loader/TestSchemaListenerManager.java
@@ -19,7 +19,6 @@ package org.apache.servicecomb.core.definition.loader;
import java.util.Arrays;
-import org.apache.servicecomb.core.definition.MicroserviceMetaManager;
import org.apache.servicecomb.core.definition.SchemaMeta;
import org.junit.Assert;
import org.junit.Before;
@@ -47,7 +46,6 @@ public class TestSchemaListenerManager {
SchemaListenerManager mgr = new SchemaListenerManager();
mgr.setSchemaListenerList(Arrays.asList(listener));
- mgr.setMicroserviceMetaManager(new MicroserviceMetaManager());
mgr.notifySchemaListener(schemaMeta);
}
diff --git a/core/src/test/java/org/apache/servicecomb/core/definition/schema/TestProducerSchemaFactory.java b/core/src/test/java/org/apache/servicecomb/core/definition/schema/TestProducerSchemaFactory.java
index 97f7ddb..fa1ea6b 100644
--- a/core/src/test/java/org/apache/servicecomb/core/definition/schema/TestProducerSchemaFactory.java
+++ b/core/src/test/java/org/apache/servicecomb/core/definition/schema/TestProducerSchemaFactory.java
@@ -16,15 +16,13 @@
*/
package org.apache.servicecomb.core.definition.schema;
+import javax.xml.ws.Holder;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.Executor;
-import javax.xml.ws.Holder;
-
import org.apache.servicecomb.core.Const;
import org.apache.servicecomb.core.Endpoint;
import org.apache.servicecomb.core.Invocation;
-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.definition.loader.SchemaLoader;
@@ -50,10 +48,11 @@ import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
-import io.swagger.models.Swagger;
import mockit.Mock;
import mockit.MockUp;
+import io.swagger.models.Swagger;
+
public class TestProducerSchemaFactory {
private static SwaggerEnvironment swaggerEnv = new BootstrapNormal().boot();
@@ -77,12 +76,10 @@ public class TestProducerSchemaFactory {
ProducerArgumentsMapperFactory producerArgsMapperFactory = new ProducerArgumentsMapperFactory();
producerArgsMapperFactory.setConverterMgr(converterMgr);
- MicroserviceMetaManager microserviceMetaManager = new MicroserviceMetaManager();
SchemaLoader schemaLoader = new SchemaLoader();
CompositeSwaggerGeneratorContext compositeSwaggerGeneratorContext = new CompositeSwaggerGeneratorContext();
producerSchemaFactory.setSwaggerEnv(swaggerEnv);
- ReflectUtils.setField(producerSchemaFactory, "microserviceMetaManager", microserviceMetaManager);
ReflectUtils.setField(producerSchemaFactory, "schemaLoader", schemaLoader);
ReflectUtils.setField(producerSchemaFactory,
"compositeSwaggerGeneratorContext",
@@ -93,8 +90,7 @@ public class TestProducerSchemaFactory {
};
new MockUp<BeanUtils>() {
@SuppressWarnings("unchecked")
- @Mock
- <T> T getBean(String name) {
+ @Mock <T> T getBean(String name) {
if (ExecutorManager.EXECUTOR_REACTIVE.equals(name)) {
return (T) reactiveExecutor;
}
@@ -111,8 +107,7 @@ public class TestProducerSchemaFactory {
@Test
public void testGetOrCreateProducer() throws Exception {
- SchemaMeta schemaMeta = producerSchemaFactory.getOrCreateProducerSchema("app:ms",
- "schema",
+ SchemaMeta schemaMeta = producerSchemaFactory.getOrCreateProducerSchema("app:ms", "schema",
TestProducerSchemaFactoryImpl.class,
new TestProducerSchemaFactoryImpl());
Swagger swagger = schemaMeta.getSwagger();
@@ -121,8 +116,8 @@ public class TestProducerSchemaFactory {
Assert.assertEquals("add", operationMeta.getOperationId());
SwaggerProducerOperation producerOperation = operationMeta.getExtData(Const.PRODUCER_OPERATION);
-
- Object addBody = Class.forName("cse.gen.app.ms.schema.addBody").newInstance();
+ //we can not set microserviceName any more,use the default name
+ Object addBody = Class.forName("cse.gen.app.perfClient.schema.addBody").newInstance();
ReflectUtils.setField(addBody, "x", 1);
ReflectUtils.setField(addBody, "y", 2);
Invocation invocation = new Invocation((Endpoint) null, operationMeta, new Object[] {addBody}) {
@@ -152,8 +147,7 @@ public class TestProducerSchemaFactory {
ArchaiusUtils.setProperty(org.apache.servicecomb.serviceregistry.api.Const.REGISTER_URL_PREFIX, "true");
System.setProperty(org.apache.servicecomb.serviceregistry.api.Const.URL_PREFIX, "/pojo/test");
- SchemaMeta schemaMeta = producerSchemaFactory.getOrCreateProducerSchema("app:ms",
- "schema2",
+ SchemaMeta schemaMeta = producerSchemaFactory.getOrCreateProducerSchema("app:ms", "schema2",
TestProducerSchemaFactoryImpl.class,
new TestProducerSchemaFactoryImpl());
OperationMeta operationMeta = schemaMeta.ensureFindOperation("add");
@@ -167,8 +161,7 @@ public class TestProducerSchemaFactory {
@Test
public void testCompletableFuture() {
- SchemaMeta schemaMeta = producerSchemaFactory.getOrCreateProducerSchema("app:ms",
- "schema3",
+ SchemaMeta schemaMeta = producerSchemaFactory.getOrCreateProducerSchema("app:ms", "schema3",
TestProducerSchemaFactoryImpl.class,
new TestProducerSchemaFactoryImpl());
OperationMeta operationMeta = schemaMeta.ensureFindOperation("async");
diff --git a/core/src/test/java/org/apache/servicecomb/core/provider/producer/TestProducerProviderManager.java b/core/src/test/java/org/apache/servicecomb/core/provider/producer/TestProducerProviderManager.java
index 0809f93..943183a 100644
--- a/core/src/test/java/org/apache/servicecomb/core/provider/producer/TestProducerProviderManager.java
+++ b/core/src/test/java/org/apache/servicecomb/core/provider/producer/TestProducerProviderManager.java
@@ -26,7 +26,6 @@ import java.util.concurrent.atomic.AtomicInteger;
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.MicroserviceMetaManager;
import org.apache.servicecomb.core.definition.OperationMeta;
import org.apache.servicecomb.core.executor.FixedThreadExecutor;
import org.apache.servicecomb.foundation.test.scaffolding.log.LogCollector;
@@ -42,9 +41,8 @@ import mockit.Mocked;
public class TestProducerProviderManager {
@Test
- public void allowedNoProvider(@Mocked MicroserviceMetaManager microserviceMetaManager) {
+ public void allowedNoProvider() {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
- context.getBeanFactory().registerSingleton(microserviceMetaManager.getClass().getName(), microserviceMetaManager);
context.register(ProducerProviderManager.class);
// must not throw exception
context.refresh();
diff --git a/demo/demo-springmvc/springmvc-server/src/main/java/org/apache/servicecomb/demo/springmvc/server/ProducerTestsAfterBootup.java b/demo/demo-springmvc/springmvc-server/src/main/java/org/apache/servicecomb/demo/springmvc/server/ProducerTestsAfterBootup.java
index ce80bf8..f6c9107 100644
--- a/demo/demo-springmvc/springmvc-server/src/main/java/org/apache/servicecomb/demo/springmvc/server/ProducerTestsAfterBootup.java
+++ b/demo/demo-springmvc/springmvc-server/src/main/java/org/apache/servicecomb/demo/springmvc/server/ProducerTestsAfterBootup.java
@@ -47,20 +47,22 @@ public class ProducerTestsAfterBootup implements BootListener {
public void testSchemaNotChange() {
LOGGER.info("ProducerTestsAfterBootup testing start");
+ //we can not set microserviceName any more
SchemaMeta meta =
- factory.getOrCreateProducerSchema("customer-service",
- "test1",
+ factory.getOrCreateProducerSchema("customer-service", "test1",
CodeFirstSpringmvcForSchema.class,
new CodeFirstSpringmvcForSchema());
String codeFirst = getSwaggerContent(meta.getSwagger());
- TestMgr.check("4d18e9b339136d68c7e5e83f4f302664c91465d9747a36334841e082d336516e",
+ TestMgr.check("2986daa46b229ec125443122dd7b51ee9a64879f1750d0996f948ce0718685c7",
RegistryUtils.calcSchemaSummary(codeFirst));
- TestMgr.check(codeFirst.length(), 896);
+ TestMgr.check(codeFirst.length(), 889);
+
}
public void testRegisterPath() {
TestMgr.check(RegistryUtils.getMicroservice().getPaths().size(), 10);
}
+
private String getSwaggerContent(Swagger swagger) {
try {
return writer.writeValueAsString(swagger);
diff --git a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/ThreadPoolMetersInitializer.java b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/ThreadPoolMetersInitializer.java
index 7d9b1f2..14cb7f8 100644
--- a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/ThreadPoolMetersInitializer.java
+++ b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/ThreadPoolMetersInitializer.java
@@ -22,9 +22,8 @@ import java.util.Map.Entry;
import java.util.concurrent.Executor;
import java.util.concurrent.ThreadPoolExecutor;
-import org.apache.servicecomb.core.CseContext;
+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.OperationMeta;
import org.apache.servicecomb.core.executor.FixedThreadExecutor;
import org.apache.servicecomb.foundation.common.utils.BeanUtils;
@@ -71,14 +70,11 @@ public class ThreadPoolMetersInitializer implements MetricsInitializer {
protected Map<Executor, Executor> collectionOperationExecutors() {
Map<Executor, Executor> operationExecutors = new IdentityHashMap<>();
-
- MicroserviceMetaManager microserviceMetaManager = CseContext.getInstance().getMicroserviceMetaManager();
- for (MicroserviceMeta microserviceMeta : microserviceMetaManager.values()) {
- for (OperationMeta operationMeta : microserviceMeta.getOperations()) {
- operationExecutors.put(operationMeta.getExecutor(), operationMeta.getExecutor());
- }
+ //only one instance in the values
+ MicroserviceMeta microserviceMeta = SCBEngine.getInstance().getProducerMicroMeta();
+ for (OperationMeta operationMeta : microserviceMeta.getOperations()) {
+ operationExecutors.put(operationMeta.getExecutor(), operationMeta.getExecutor());
}
-
return operationExecutors;
}
diff --git a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestThreadPoolMetersInitializer.java b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestThreadPoolMetersInitializer.java
index 116e059..c051dc5 100644
--- a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestThreadPoolMetersInitializer.java
+++ b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestThreadPoolMetersInitializer.java
@@ -28,8 +28,8 @@ import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.ThreadPoolExecutor;
import org.apache.servicecomb.core.CseContext;
+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.OperationMeta;
import org.apache.servicecomb.core.executor.FixedThreadExecutor;
import org.apache.servicecomb.foundation.common.utils.BeanUtils;
@@ -43,7 +43,6 @@ import org.springframework.context.ApplicationContext;
import com.netflix.spectator.api.DefaultRegistry;
import com.netflix.spectator.api.ManualClock;
import com.netflix.spectator.api.Registry;
-
import mockit.Expectations;
import mockit.Mock;
import mockit.MockUp;
@@ -72,8 +71,6 @@ public class TestThreadPoolMetersInitializer {
@Mocked
ApplicationContext applicationContext;
- @Mocked
- MicroserviceMetaManager microserviceMetaManager;
@Mocked
MicroserviceMeta microserviceMeta;
@@ -89,6 +86,12 @@ public class TestThreadPoolMetersInitializer {
@Test
public void init() {
+ new Expectations(SCBEngine.class) {
+ {
+ SCBEngine.getInstance().getProducerMicroMeta();
+ result = microserviceMeta;
+ }
+ };
new Expectations(SPIServiceUtils.class) {
{
SPIServiceUtils.getTargetService(MetricsInitializer.class, DefaultRegistryInitializer.class);
@@ -97,7 +100,6 @@ public class TestThreadPoolMetersInitializer {
result = registry;
}
};
-
Map<String, Executor> beanExecutors = new HashMap<>();
beanExecutors.put("executor", executor);
beanExecutors.put("fixedThreadExecutor", fixedThreadExecutor);
@@ -113,10 +115,6 @@ public class TestThreadPoolMetersInitializer {
new Expectations(CseContext.getInstance()) {
{
- CseContext.getInstance().getMicroserviceMetaManager();
- result = microserviceMetaManager;
- microserviceMetaManager.values();
- result = Arrays.asList(microserviceMeta);
microserviceMeta.getOperations();
result = Arrays.asList(operationMetaExecutor, operationMetaSameExecutor, operationMetaFixedThreadExecutor);
operationMetaExecutor.getExecutor();
diff --git a/providers/provider-pojo/src/test/java/org/apache/servicecomb/provider/common/MockUtil.java b/providers/provider-pojo/src/test/java/org/apache/servicecomb/provider/common/MockUtil.java
index bea8107..d3e46c0 100644
--- a/providers/provider-pojo/src/test/java/org/apache/servicecomb/provider/common/MockUtil.java
+++ b/providers/provider-pojo/src/test/java/org/apache/servicecomb/provider/common/MockUtil.java
@@ -17,7 +17,6 @@
package org.apache.servicecomb.provider.common;
-import org.apache.servicecomb.core.definition.MicroserviceMetaManager;
import org.apache.servicecomb.foundation.common.utils.BeanUtils;
import org.mockito.Mockito;
import org.springframework.context.ApplicationContext;
@@ -26,7 +25,6 @@ import mockit.Mock;
import mockit.MockUp;
public class MockUtil {
- MicroserviceMetaManager microserviceMetaManager = new MicroserviceMetaManager();
private static MockUtil instance = new MockUtil();
diff --git a/transports/transport-highway/src/main/java/org/apache/servicecomb/transport/highway/HighwayServerInvoke.java b/transports/transport-highway/src/main/java/org/apache/servicecomb/transport/highway/HighwayServerInvoke.java
index fd82cca..d19ec8b 100644
--- a/transports/transport-highway/src/main/java/org/apache/servicecomb/transport/highway/HighwayServerInvoke.java
+++ b/transports/transport-highway/src/main/java/org/apache/servicecomb/transport/highway/HighwayServerInvoke.java
@@ -23,11 +23,10 @@ import org.apache.servicecomb.codec.protobuf.definition.OperationProtobuf;
import org.apache.servicecomb.codec.protobuf.definition.ProtobufManager;
import org.apache.servicecomb.codec.protobuf.utils.WrapSchema;
import org.apache.servicecomb.core.Const;
-import org.apache.servicecomb.core.CseContext;
import org.apache.servicecomb.core.Endpoint;
import org.apache.servicecomb.core.Invocation;
+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.OperationMeta;
import org.apache.servicecomb.core.definition.SchemaMeta;
import org.apache.servicecomb.core.invocation.InvocationFactory;
@@ -45,8 +44,6 @@ import io.vertx.core.buffer.Buffer;
public class HighwayServerInvoke {
private static final Logger LOGGER = LoggerFactory.getLogger(HighwayServerInvoke.class);
- private MicroserviceMetaManager microserviceMetaManager = CseContext.getInstance().getMicroserviceMetaManager();
-
private ProtobufFeature protobufFeature;
private RequestHeader header;
@@ -74,10 +71,6 @@ public class HighwayServerInvoke {
this.protobufFeature = protobufFeature;
}
- public void setMicroserviceMetaManager(MicroserviceMetaManager microserviceMetaManager) {
- this.microserviceMetaManager = microserviceMetaManager;
- }
-
public boolean init(TcpConnection connection, long msgId,
RequestHeader header, Buffer bodyBuffer) {
try {
@@ -103,7 +96,7 @@ public class HighwayServerInvoke {
this.msgId = msgId;
this.header = header;
- MicroserviceMeta microserviceMeta = microserviceMetaManager.ensureFindValue(header.getDestMicroservice());
+ MicroserviceMeta microserviceMeta = SCBEngine.getInstance().getProducerMicroMeta();
SchemaMeta schemaMeta = microserviceMeta.ensureFindSchemaMeta(header.getSchemaId());
this.operationMeta = schemaMeta.ensureFindOperation(header.getOperationName());
this.operationProtobuf = ProtobufManager.getOrCreateOperation(operationMeta);
diff --git a/transports/transport-highway/src/test/java/org/apache/servicecomb/transport/highway/TestHighwayServerConnection.java b/transports/transport-highway/src/test/java/org/apache/servicecomb/transport/highway/TestHighwayServerConnection.java
index 4f49fbc..1d2783f 100644
--- a/transports/transport-highway/src/test/java/org/apache/servicecomb/transport/highway/TestHighwayServerConnection.java
+++ b/transports/transport-highway/src/test/java/org/apache/servicecomb/transport/highway/TestHighwayServerConnection.java
@@ -16,17 +16,16 @@
*/
package org.apache.servicecomb.transport.highway;
+import javax.xml.ws.Holder;
import java.net.InetSocketAddress;
import java.util.concurrent.atomic.AtomicInteger;
-import javax.xml.ws.Holder;
-
import org.apache.servicecomb.codec.protobuf.definition.ProtobufManager;
import org.apache.servicecomb.codec.protobuf.utils.WrapSchema;
import org.apache.servicecomb.core.CseContext;
import org.apache.servicecomb.core.Endpoint;
+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.OperationMeta;
import org.apache.servicecomb.core.definition.SchemaMeta;
import org.apache.servicecomb.foundation.vertx.stream.BufferOutputStream;
@@ -36,16 +35,17 @@ import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
+import mockit.Expectations;
+import mockit.Mock;
+import mockit.MockUp;
+import mockit.Mocked;
+
import io.protostuff.LinkedBuffer;
import io.protostuff.ProtobufOutput;
import io.vertx.core.buffer.Buffer;
import io.vertx.core.net.NetSocket;
import io.vertx.core.net.impl.NetSocketImpl;
import io.vertx.core.net.impl.SocketAddressImpl;
-import mockit.Expectations;
-import mockit.Mock;
-import mockit.MockUp;
-import mockit.Mocked;
public class TestHighwayServerConnection {
private static WrapSchema requestHeaderSchema =
@@ -57,9 +57,6 @@ public class TestHighwayServerConnection {
HighwayServerConnection connection;
@Mocked
- MicroserviceMetaManager microserviceMetaManager;
-
- @Mocked
Endpoint endpoint;
@Mocked
@@ -147,15 +144,14 @@ public class TestHighwayServerConnection {
Buffer headerBuffer = createBuffer(requestHeaderSchema, header);
Buffer bodyBuffer = Buffer.buffer();
-
- new Expectations(CseContext.getInstance()) {
+ new Expectations(SCBEngine.class) {
{
- CseContext.getInstance().getMicroserviceMetaManager();
- result = microserviceMetaManager;
-
- microserviceMetaManager.ensureFindValue(null);
+ SCBEngine.getInstance().getProducerMicroMeta();
result = microserviceMeta;
-
+ }
+ };
+ new Expectations(CseContext.getInstance()) {
+ {
microserviceMeta.ensureFindSchemaMeta(header.getSchemaId());
result = schemaMeta;
}
diff --git a/transports/transport-highway/src/test/java/org/apache/servicecomb/transport/highway/TestHighwayServerInvoke.java b/transports/transport-highway/src/test/java/org/apache/servicecomb/transport/highway/TestHighwayServerInvoke.java
index 525b5e0..ecf8ddd 100644
--- a/transports/transport-highway/src/test/java/org/apache/servicecomb/transport/highway/TestHighwayServerInvoke.java
+++ b/transports/transport-highway/src/test/java/org/apache/servicecomb/transport/highway/TestHighwayServerInvoke.java
@@ -133,7 +133,7 @@ public class TestHighwayServerInvoke {
operationMeta.setExecutor(new ReactiveExecutor());
HighwayServerInvoke highwayServerInvoke = new HighwayServerInvoke();
- highwayServerInvoke.setMicroserviceMetaManager(unitTestMeta.getMicroserviceMetaManager());
+// highwayServerInvoke.setMicroserviceMetaManager(unitTestMeta.getMicroserviceMetaManager());
RequestHeader requestHeader = MockUtil.getInstance().requestHeader;