/*
* Copyright 2008-2009 the original author or authors.
*
* 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.
*/
package net.hasor.registry.boot;
import net.hasor.registry.CenterMode;
import net.hasor.registry.RsfCenterSettings;
import net.hasor.registry.client.RegistryClientModule;
import net.hasor.registry.server.manager.RegistryServerModule;
import net.hasor.rsf.RsfApiBinder;
import net.hasor.rsf.RsfEnvironment;
import net.hasor.rsf.RsfModule;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* 注册中心启动入口。
*
* @author 赵永春(zyc@hasor.net)
* @version : 2015年5月5日
*/
public class RegistryBootModule extends RsfModule {
protected Logger logger = LoggerFactory.getLogger(getClass());
//
@Override
public void loadModule(RsfApiBinder apiBinder) throws Throwable {
RsfEnvironment rsfEnvironment = apiBinder.getEnvironment();
RsfCenterSettings settings = new RsfCenterSettingsImpl(rsfEnvironment.getSettings());
apiBinder.bindType(RsfCenterSettings.class).toInstance(settings);
//
if (CenterMode.None.equals(settings.getMode())) {
this.logger.warn("registry workAt None mode, so registry cannot be started.");
return;
}
//
if (CenterMode.Client.equals(settings.getMode())) {
this.logger.warn("registry workAt Client mode, so registry will maintain your service info.");
apiBinder.installModule(new RegistryClientModule(settings));
return;
}
//
if (CenterMode.Server.equals(settings.getMode())) {
this.logger.warn("registry workAt Server mode, so registry will managing all service info.");
apiBinder.installModule(new RegistryServerModule(rsfEnvironment, settings));
return;
}
//
if (CenterMode.Cluster.equals(settings.getMode())) {
this.logger.warn("registry workAt Cluster mode, Temporary does not support.");
throw new UnsupportedOperationException("Temporary does not support");
}
}
}