com.alipay.sofa.runtime.spring.bean.SofaBeanNameGenerator Maven / Gradle / Ivy
/*
* 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 com.alipay.sofa.runtime.spring.bean;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.util.StringUtils;
import com.alipay.sofa.runtime.spring.parser.AbstractContractDefinitionParser;
import static com.alipay.sofa.runtime.spring.parser.ServiceDefinitionParser.BEAN_ID;
/**
* Service and reference factory bean name generator.
*
* @author qilong.zql
* @since 3.1.0
*/
public class SofaBeanNameGenerator {
private static final String SERVICE_BEAN_NAME_PREFIX = "ServiceFactoryBean#";
private static final String REFERENCE_BEAN_NAME_PREFIX = "ReferenceFactoryBean#";
public static String generateSofaServiceBeanName(BeanDefinition definition) {
String interfaceName = (String) definition.getPropertyValues().get(
AbstractContractDefinitionParser.INTERFACE_PROPERTY);
Class> clazz = (Class>) definition.getPropertyValues().get(
AbstractContractDefinitionParser.INTERFACE_CLASS_PROPERTY);
if (clazz != null) {
interfaceName = clazz.getCanonicalName();
}
String uniqueId = (String) definition.getPropertyValues().get(
AbstractContractDefinitionParser.UNIQUE_ID_PROPERTY);
return generateSofaServiceBeanName(interfaceName, uniqueId, (String) definition
.getPropertyValues().get(BEAN_ID));
}
public static String generateSofaServiceBeanName(Class> interfaceType, String uniqueId) {
return generateSofaServiceBeanName(interfaceType.getCanonicalName(), uniqueId);
}
public static String generateSofaServiceBeanName(String interfaceName, String uniqueId,
String beanId) {
return generateSofaServiceBeanName(interfaceName, uniqueId) + ":" + beanId;
}
public static String generateSofaServiceBeanName(Class> interfaceType, String uniqueId,
String beanId) {
return generateSofaServiceBeanName(interfaceType, uniqueId) + ":" + beanId;
}
public static String generateSofaServiceBeanName(String interfaceName, String uniqueId) {
if (!StringUtils.hasText(uniqueId)) {
return SERVICE_BEAN_NAME_PREFIX + interfaceName;
}
return SERVICE_BEAN_NAME_PREFIX + interfaceName + ":" + uniqueId;
}
public static String generateSofaReferenceBeanName(Class> interfaceType, String uniqueId) {
if (!StringUtils.hasText(uniqueId)) {
return REFERENCE_BEAN_NAME_PREFIX + interfaceType.getCanonicalName();
}
return REFERENCE_BEAN_NAME_PREFIX + interfaceType.getCanonicalName() + ":" + uniqueId;
}
}