I am working on two projects , 1) micro service(MSA) and 2)SDK
I am sending a GET request from the MSA to SDK where I expect to get a JAVA class as the return type , but instead I am returned just the FQDN of the class as a String
MSA code :
@SuppressWarnings("unchecked")
@Override
public Map<String, Class<?>> getSettingClasses() {
try {
Map<String, String> queryParam = Maps.newHashMap();
queryParam.put("sid", userContext.getServiceId().toString());
Map<String, Class<?>> map = restClient.get(
commonSettingService.getApplicationCode(commonSettingService.getServiceDefId(userContext
.getServiceId())), MasterMaintenanceEndpoint.GET_SETTING_CLASSES, Map.class,
userContext.getSessionToken(), queryParam);
return map;
} catch (Exception e) {
logger.error("Can not connect to Master Maintenance service", e);
return null;
}
}
SDK code :
@RequestMapping(method = RequestMethod.GET)
@ResponseBody
public Map<String, Class<?>> getSettingClasses() {
Map<String, Class<?>> clazz = Maps.newHashMap();
String serviceDefId = getProviderService().getServiceDefId();
String serviceId = userContext.getServiceId().toString();
clazz.put("dtoClass", getProviderService().getDtoClass());
clazz.put("dtoIndexClass", getProviderService().getIndexDtoClass());
return clazz;
}
Service code :
Map<String, Class<?>> masterMaintenanceClassMap = webApiService.getSettingClasses();
Class<?> dtoClass = masterMaintenanceClassMap.get("dtoClass");
Class<?> dtoIndexClass = masterMaintenanceClassMap.get("dtoIndexClass");
Within SDK code , getProviderService().getDtoClass()
returns a java.lang.Class
type but in Service code , masterMaintenanceClassMap.get("dtoClass")
evaluates to a String
type whose value is actually FQDN of the class.
Does REST restrict returning a Class ? Is there a workaround for this ?
Note : I am unable to do Class.forName(fqdn)
in my service code as it does not have dependency to the class