use of com.alipay.sofa.runtime.spi.component.DefaultImplementation in project sofa-boot by alipay.
the class ReferenceRegisterHelper method registerReference.
public static Object registerReference(Reference reference, BindingAdapterFactory bindingAdapterFactory, SofaRuntimeContext sofaRuntimeContext, ApplicationContext applicationContext) {
Binding binding = (Binding) reference.getBindings().toArray()[0];
if (!binding.getBindingType().equals(JvmBinding.JVM_BINDING_TYPE) && !SofaRuntimeProperties.isDisableJvmFirst(sofaRuntimeContext) && reference.isJvmFirst()) {
// as rpc invocation would be serialized, so here would Not ignore serialized
reference.addBinding(new JvmBinding());
}
ComponentManager componentManager = sofaRuntimeContext.getComponentManager();
ReferenceComponent referenceComponent = new ReferenceComponent(reference, new DefaultImplementation(), bindingAdapterFactory, sofaRuntimeContext);
if (componentManager.isRegistered(referenceComponent.getName())) {
return componentManager.getComponentInfo(referenceComponent.getName()).getImplementation().getTarget();
}
ComponentInfo componentInfo = componentManager.registerAndGet(referenceComponent);
componentInfo.setApplicationContext(applicationContext);
return componentInfo.getImplementation().getTarget();
}
use of com.alipay.sofa.runtime.spi.component.DefaultImplementation in project sofa-boot by alipay.
the class ServiceFactoryBean method doAfterPropertiesSet.
@Override
protected void doAfterPropertiesSet() {
if (!apiType && hasSofaServiceAnnotation()) {
throw new ServiceRuntimeException(ErrorCode.convert("01-00103", beanId, ref.getClass()));
}
Implementation implementation = new DefaultImplementation();
implementation.setTarget(ref);
service = buildService();
// default add jvm binding and service jvm binding should set serialize as true
if (bindings.size() == 0) {
JvmBindingParam jvmBindingParam = new JvmBindingParam().setSerialize(true);
bindings.add(new JvmBinding().setJvmBindingParam(jvmBindingParam));
}
for (Binding binding : bindings) {
service.addBinding(binding);
}
ComponentInfo componentInfo = new ServiceComponent(implementation, service, bindingAdapterFactory, sofaRuntimeContext);
componentInfo.setApplicationContext(applicationContext);
sofaRuntimeContext.getComponentManager().register(componentInfo);
}
use of com.alipay.sofa.runtime.spi.component.DefaultImplementation in project sofa-boot by alipay.
the class ExtensionClientImpl method publishExtensionPoint.
@Override
public void publishExtensionPoint(ExtensionPointParam extensionPointParam) {
Assert.notNull(extensionPointParam, "extensionPointParam can not be null.");
Assert.notNull(extensionPointParam.getName(), "Extension point name can not be null.");
Assert.notNull(extensionPointParam.getContributionClass(), "Extension point contribution can not be null.");
Assert.notNull(extensionPointParam.getTarget(), "Extension point target can not be null.");
ExtensionPoint extensionPoint = new ExtensionPointImpl(extensionPointParam.getName(), extensionPointParam.getContributionClass());
Implementation implementation = new DefaultImplementation(extensionPointParam.getTargetName());
implementation.setTarget(extensionPointParam.getTarget());
ComponentInfo extensionPointComponent = new ExtensionPointComponent(extensionPoint, sofaRuntimeContext, implementation);
sofaRuntimeContext.getComponentManager().register(extensionPointComponent);
}
use of com.alipay.sofa.runtime.spi.component.DefaultImplementation in project sofa-boot by alipay.
the class ReferenceComponent method activate.
@Override
public void activate() throws ServiceRuntimeException {
if (reference.hasBinding()) {
Binding candidate = null;
Set<Binding> bindings = reference.getBindings();
if (bindings.size() == 1) {
candidate = bindings.iterator().next();
} else if (bindings.size() > 1) {
Object backupProxy = null;
for (Binding binding : bindings) {
if (JvmBinding.JVM_BINDING_TYPE.getType().equals(binding.getName())) {
candidate = binding;
} else {
// Under normal RPC reference (local-first/jvm-first is not set to false) binding,
// backup proxy is the RPC proxy, which will be invoked if Jvm service is not found
backupProxy = createProxy(reference, binding);
}
}
if (candidate != null) {
((JvmBinding) candidate).setBackupProxy(backupProxy);
}
}
Object proxy = null;
if (candidate != null) {
proxy = createProxy(reference, candidate);
}
this.implementation = new DefaultImplementation();
implementation.setTarget(proxy);
}
super.activate();
latch.countDown();
}
use of com.alipay.sofa.runtime.spi.component.DefaultImplementation in project sofa-boot by sofastack.
the class ExtensionClientImpl method publishExtensionPoint.
@Override
public void publishExtensionPoint(ExtensionPointParam extensionPointParam) {
Assert.notNull(extensionPointParam, "extensionPointParam can not be null.");
Assert.notNull(extensionPointParam.getName(), "Extension point name can not be null.");
Assert.notNull(extensionPointParam.getContributionClass(), "Extension point contribution can not be null.");
Assert.notNull(extensionPointParam.getTarget(), "Extension point target can not be null.");
ExtensionPoint extensionPoint = new ExtensionPointImpl(extensionPointParam.getName(), extensionPointParam.getContributionClass());
Implementation implementation = new DefaultImplementation(extensionPointParam.getTargetName());
implementation.setTarget(extensionPointParam.getTarget());
ComponentInfo extensionPointComponent = new ExtensionPointComponent(extensionPoint, sofaRuntimeContext, implementation);
sofaRuntimeContext.getComponentManager().register(extensionPointComponent);
}
Aggregations