blob: f98761ee4038561c730bdf5768b24cce1e6e523d [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.registry.consumer;
import java.util.Collection;
import java.util.List;
import org.apache.servicecomb.foundation.common.VendorExtensions;
import org.apache.servicecomb.registry.api.event.CreateMicroserviceVersionEvent;
import org.apache.servicecomb.registry.api.event.DestroyMicroserviceVersionEvent;
import org.apache.servicecomb.registry.api.registry.Microservice;
import org.apache.servicecomb.registry.api.registry.MicroserviceInstance;
import org.apache.servicecomb.registry.DiscoveryManager;
import org.apache.servicecomb.foundation.common.Version;
public class MicroserviceVersion {
protected AppManager appManager;
protected MicroserviceVersions microserviceVersions;
// because of cross app invoke
// microserviceName not always equals microservice.serviceName
protected String microserviceName;
protected Version version;
protected Microservice microservice;
protected Collection<MicroserviceInstance> instances;
private final VendorExtensions vendorExtensions = new VendorExtensions();
public MicroserviceVersion(MicroserviceVersions microserviceVersions, String microserviceId,
String microserviceName,
Collection<MicroserviceInstance> instances) {
Microservice microservice = DiscoveryManager.INSTANCE.getMicroservice(microserviceId);
if (microservice == null) {
throw new IllegalStateException(
String.format("failed to query by microserviceId '%s' from ServiceCenter.", microserviceId));
}
init(microserviceVersions, microservice, microserviceName, instances);
appManager.getEventBus().post(new CreateMicroserviceVersionEvent(this));
}
public MicroserviceVersion(MicroserviceVersions microserviceVersions,
Microservice microservice, String microserviceName,
Collection<MicroserviceInstance> instances) {
init(microserviceVersions, microservice, microserviceName, instances);
appManager.getEventBus().post(new CreateMicroserviceVersionEvent(this));
}
protected void init(MicroserviceVersions microserviceVersions, Microservice microservice,
String microserviceName,
Collection<MicroserviceInstance> instances) {
this.appManager = microserviceVersions.getAppManager();
this.microserviceVersions = microserviceVersions;
this.microservice = microservice;
this.microserviceName = microserviceName;
this.instances = instances;
this.version = new Version(microservice.getVersion());
}
public MicroserviceVersions getMicroserviceVersions() {
return microserviceVersions;
}
public Collection<MicroserviceInstance> getInstances() {
return instances;
}
public void setInstances(List<MicroserviceInstance> instances) {
this.instances = instances;
}
public String getMicroserviceName() {
return microserviceName;
}
public String getMicroserviceId() {
return microservice.getServiceId();
}
public Microservice getMicroservice() {
return microservice;
}
public Version getVersion() {
return version;
}
public VendorExtensions getVendorExtensions() {
return vendorExtensions;
}
public void destroy() {
appManager.getEventBus().post(new DestroyMicroserviceVersionEvent(this));
}
}