Skip to content

Commit

Permalink
Merge pull request #165 from nacos-group/develop
Browse files Browse the repository at this point in the history
Release 0.3.4 version
  • Loading branch information
chuntaojun authored Oct 21, 2019
2 parents b64cc9f + 6719039 commit be8b587
Show file tree
Hide file tree
Showing 128 changed files with 9,769 additions and 7,699 deletions.
755 changes: 755 additions & 0 deletions eclipse/eclipse-code-formatter.xml

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -16,20 +16,21 @@
*/
package com.alibaba.nacos.spring.beans.factory.annotation;

import java.util.Map;
import java.util.Properties;

import com.alibaba.nacos.api.annotation.NacosProperties;
import com.alibaba.nacos.api.exception.NacosException;
import com.alibaba.nacos.spring.factory.NacosServiceFactory;
import com.alibaba.nacos.spring.util.GlobalNacosPropertiesSource;
import com.alibaba.nacos.spring.util.NacosUtils;

import org.springframework.beans.factory.BeanCreationException;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.BeanFactoryAware;
import org.springframework.context.EnvironmentAware;
import org.springframework.core.env.Environment;

import java.util.Map;
import java.util.Properties;

import static com.alibaba.nacos.spring.util.NacosBeanUtils.getNacosServiceFactoryBean;
import static com.alibaba.spring.util.ClassUtils.resolveGenericType;
import static java.lang.String.format;
Expand All @@ -42,91 +43,97 @@
* @author <a href="mailto:mercyblitz@gmail.com">Mercy</a>
* @since 0.1.0
*/
public abstract class AbstractNacosServiceBeanBuilder<S> implements BeanFactoryAware, EnvironmentAware {

private BeanFactory beanFactory;

private Environment environment;

private final Class<?> type;

private final GlobalNacosPropertiesSource source;

protected AbstractNacosServiceBeanBuilder(GlobalNacosPropertiesSource source) {
type = resolveGenericType(getClass());
this.source = source;
}

public S build(NacosProperties nacosProperties) {
return build(getAnnotationAttributes(nacosProperties));
}

public S build(Map<String, Object> nacosPropertiesAttributes) {

NacosServiceFactory nacosServiceFactory = getNacosServiceFactoryBean(beanFactory);
Properties properties = resolveProperties(nacosPropertiesAttributes);

if (properties.isEmpty()) {
throw new BeanCreationException(
format("The @%s attributes must be configured",
NacosProperties.class.getSimpleName()));
}

try {
return createService(nacosServiceFactory, properties);
} catch (NacosException e) {
throw new BeanCreationException(e.getErrMsg(), e);
}
}

/**
* Subtype would implement this method to create target Nacos Service
*
* @param nacosServiceFactory {@link NacosServiceFactory}
* @param properties {@link Properties}
* @return target Nacos Service instance
* @throws NacosException When Nacos Service creation is failed
*/
protected abstract S createService(NacosServiceFactory nacosServiceFactory, Properties properties) throws NacosException;

/**
* Resolve Nacos {@link Properties} from {@link NacosProperties @NacosProperties}
*
* @param nacosProperties {@link NacosProperties @NacosProperties}
* @return non-null
*/
public final Properties resolveProperties(NacosProperties nacosProperties) {
Properties globalNacosProperties = resolveGlobalNacosProperties();
return NacosUtils.resolveProperties(nacosProperties, environment, globalNacosProperties);
}

/**
* Resolve Nacos {@link Properties} from {@link NacosProperties @NacosProperties}
*
* @param nacosPropertiesAttributes {@link NacosProperties Nacos Properties}'s attributes
* @return non-null
*/
public final Properties resolveProperties(Map<String, Object> nacosPropertiesAttributes) {
Properties globalNacosProperties = resolveGlobalNacosProperties();
return NacosUtils.resolveProperties(nacosPropertiesAttributes, environment, globalNacosProperties);
}

private Properties resolveGlobalNacosProperties() {
return source.getMergedGlobalProperties(beanFactory);
}


final Class<?> getType() {
return type;
}

@Override
public void setBeanFactory(BeanFactory beanFactory) {
this.beanFactory = beanFactory;
}

@Override
public void setEnvironment(Environment environment) {
this.environment = environment;
}
public abstract class AbstractNacosServiceBeanBuilder<S>
implements BeanFactoryAware, EnvironmentAware {

private BeanFactory beanFactory;

private Environment environment;

private final Class<?> type;

private final GlobalNacosPropertiesSource source;

protected AbstractNacosServiceBeanBuilder(GlobalNacosPropertiesSource source) {
type = resolveGenericType(getClass());
this.source = source;
}

public S build(NacosProperties nacosProperties) {
return build(getAnnotationAttributes(nacosProperties));
}

public S build(Map<String, Object> nacosPropertiesAttributes) {

NacosServiceFactory nacosServiceFactory = getNacosServiceFactoryBean(beanFactory);
Properties properties = resolveProperties(nacosPropertiesAttributes);

if (properties.isEmpty()) {
throw new BeanCreationException(
format("The @%s attributes must be configured",
NacosProperties.class.getSimpleName()));
}

try {
return createService(nacosServiceFactory, properties);
}
catch (NacosException e) {
throw new BeanCreationException(e.getErrMsg(), e);
}
}

/**
* Subtype would implement this method to create target Nacos Service
*
* @param nacosServiceFactory {@link NacosServiceFactory}
* @param properties {@link Properties}
* @return target Nacos Service instance
* @throws NacosException When Nacos Service creation is failed
*/
protected abstract S createService(NacosServiceFactory nacosServiceFactory,
Properties properties) throws NacosException;

/**
* Resolve Nacos {@link Properties} from {@link NacosProperties @NacosProperties}
*
* @param nacosProperties {@link NacosProperties @NacosProperties}
* @return non-null
*/
public final Properties resolveProperties(NacosProperties nacosProperties) {
Properties globalNacosProperties = resolveGlobalNacosProperties();
return NacosUtils.resolveProperties(nacosProperties, environment,
globalNacosProperties);
}

/**
* Resolve Nacos {@link Properties} from {@link NacosProperties @NacosProperties}
*
* @param nacosPropertiesAttributes {@link NacosProperties Nacos Properties}'s
* attributes
* @return non-null
*/
public final Properties resolveProperties(
Map<String, Object> nacosPropertiesAttributes) {
Properties globalNacosProperties = resolveGlobalNacosProperties();
return NacosUtils.resolveProperties(nacosPropertiesAttributes, environment,
globalNacosProperties);
}

private Properties resolveGlobalNacosProperties() {
return source.getMergedGlobalProperties(beanFactory);
}

final Class<?> getType() {
return type;
}

@Override
public void setBeanFactory(BeanFactory beanFactory) {
this.beanFactory = beanFactory;
}

@Override
public void setEnvironment(Environment environment) {
this.environment = environment;
}
}
Loading

0 comments on commit be8b587

Please sign in to comment.