Skip to content

Commit

Permalink
Configuration file format changes
Browse files Browse the repository at this point in the history
  • Loading branch information
pandalee99 committed Nov 8, 2023
1 parent 28621f2 commit 03ee605
Show file tree
Hide file tree
Showing 8 changed files with 56 additions and 45 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@
*/
package com.alipay.sofa.rpc.codec.fury;

/**
* @author lipan
*/
public enum AccessConfig {
WHITELIST_CONFIG("whitelist"), BLACKLIST_CONFIG("blacklist"), NONE_CONFIG("none");

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

import com.alipay.sofa.common.config.SofaConfigs;
import com.alipay.sofa.rpc.codec.AbstractSerializer;
Expand Down Expand Up @@ -62,21 +61,20 @@ public class FurySerializer extends AbstractSerializer {
private static final String CHECKER_MODE = SofaConfigs.getOrDefault(RpcConfigKeys.CHECKER_MODE);

public FurySerializer() {
// Load the register for higher efficiency
ArrayList<Class<?>> registerList = new ArrayList<>();
Map<String, Boolean> registerMap = loadConf("register");
if (registerMap != null) {
registerMap.forEach((className, use) -> {
if (use) {
Class<?> clazz;
try {
clazz = Class.forName(className);
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}
registerList.add(clazz);
List<String> classList = loadConf("register");
if (classList != null) {
for (String className : classList) {
Class<?> clazz;
try {
clazz = Class.forName(className);
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}
registerList.add(clazz);
}

});
}

fury = new ThreadLocalFury(classLoader -> {
Expand All @@ -96,17 +94,15 @@ public FurySerializer() {
}
}

if(CHECKER_MODE.equals(AccessConfig.NONE_CONFIG.getConfigType())) {
// Do not use any configuration
if (CHECKER_MODE.equals(AccessConfig.NONE_CONFIG.getConfigType())) {
return f;
}

if (CHECKER_MODE.equals(AccessConfig.WHITELIST_CONFIG.getConfigType())) {
Map<String, Boolean> whiteListMap = loadConf(AccessConfig.WHITELIST_CONFIG.getConfigType());
if(whiteListMap != null) {
List<String> whiteList = whiteListMap.entrySet().stream()
.filter(Map.Entry::getValue)
.map(Map.Entry::getKey)
.collect(Collectors.toList());
List<String> whiteList = loadConf(AccessConfig.WHITELIST_CONFIG.getConfigType());
if (whiteList != null) {
// To setting checker
f.getClassResolver().setClassChecker(checker);
checker.addListener(f.getClassResolver());
// WhiteList classes use wildcards
Expand All @@ -115,12 +111,9 @@ public FurySerializer() {
}
}
} else if (CHECKER_MODE.equals(AccessConfig.BLACKLIST_CONFIG.getConfigType())) {
Map<String, Boolean> blackListMap = loadConf(AccessConfig.BLACKLIST_CONFIG.getConfigType());
if(blackListMap != null) {
List<String> blackList = blackListMap.entrySet().stream()
.filter(Map.Entry::getValue)
.map(Map.Entry::getKey)
.collect(Collectors.toList());
List<String> blackList = loadConf(AccessConfig.BLACKLIST_CONFIG.getConfigType());
if (blackList != null) {
// To setting checker
f.getClassResolver().setClassChecker(checker);
checker.addListener(f.getClassResolver());
// BlackList classes use wildcards
Expand All @@ -141,21 +134,22 @@ public void addBlackList(String address) {
checker.disallowClass(address);
}

private static Map<String, Boolean> loadConf(String name) {
Map<String, Boolean> confMap = null;
private static List<String> loadConf(String name) {
List<String> confList = null;
try {
Enumeration<URL> urls = ClassLoader.getSystemResources("conf.yml");
// Use the configuration file to obtain the whitelist
Enumeration<URL> urls = ClassLoader.getSystemResources("configuration.yml");
while (urls.hasMoreElements()) {
URL url = urls.nextElement();
InputStream inputStream = url.openStream();
Yaml yaml = new Yaml();
Map<String, Object> yamlContent = yaml.load(inputStream);
confMap = (Map<String, Boolean>) yamlContent.get(name);
confList = (List<String>) yamlContent.get(name);
}
} catch (Exception e) {
throw new RuntimeException(e);
}
return confMap;
return confList;
}

@Override
Expand Down Expand Up @@ -271,7 +265,8 @@ private void decodeSofaRequest(AbstractByteBuf data, SofaRequest sofaRequest, Ma
sofaRequest.setMethodArgSigs(parseArgSigs(requestClass));
}

private Object[] decode(final AbstractByteBuf data, final Class<?>[] templateList, final Map<String, String> context)
private Object[] decode(final AbstractByteBuf data, final Class<?>[] templateList,
final Map<String, String> context)
throws SofaRpcException {
ArrayList<Object> objectList = new ArrayList<>();
for (Class<?> clazz : templateList) {
Expand Down
13 changes: 0 additions & 13 deletions codec/codec-fury/src/main/resources/conf.yml

This file was deleted.

14 changes: 14 additions & 0 deletions codec/codec-fury/src/main/resources/configuration.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
whitelist:
- com.alipay.sofa.rpc.codec.fury.model.whitelist.*
- com.alipay.sofa.rpc.codec.fury.model.Registered.*


register:
- com.alipay.sofa.rpc.codec.fury.model.Registered.DemoRequest
- com.alipay.sofa.rpc.codec.fury.model.Registered.DemoResponse
- com.alipay.sofa.rpc.codec.fury.model.Registered.HelloService
- com.alipay.sofa.rpc.codec.fury.model.Registered.HelloServiceImpl
- com.alipay.sofa.rpc.codec.fury.model.Registered.RegisteredClass

blacklist:
- com.alipay.sofa.rpc.codec.fury.model.blacklist.*
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@

import com.alipay.sofa.rpc.codec.fury.model.whitelist.Person;

/**
* @author lipan
*/
public interface HelloService {

String sayHello(Person person);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@

import com.alipay.sofa.rpc.codec.fury.model.whitelist.Person;

/**
* @author lipan
*/
public class HelloServiceImpl implements HelloService {

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@

import com.alipay.sofa.rpc.codec.fury.model.Registered.HelloService;

/**
* @author lipan
*/
public class HelloServiceImpl2 implements HelloService {

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@
*/
package com.alipay.sofa.rpc.codec.fury.model.whitelist;

/**
* @author lipan
*/
public class Person {
private String name;
private int age;
Expand Down

0 comments on commit 03ee605

Please sign in to comment.