use of org.apache.dubbo.metadata.rest.ServiceRestMetadata in project dubbo by alibaba.
the class AbstractServiceRestMetadataResolver method resolve.
@Override
public final ServiceRestMetadata resolve(ProcessingEnvironment processingEnv, TypeElement serviceType, Set<? extends TypeElement> annotations) {
info("%s is processing the service type[%s] with annotations[%s]", processorName, serviceType, annotations.stream().map(t -> "@" + t.toString()).collect(Collectors.joining(",")));
ServiceRestMetadata serviceRestMetadata = new ServiceRestMetadata();
Elements elements = processingEnv.getElementUtils();
try {
AnnotationMirror serviceAnnotation = getAnnotation(serviceType);
String serviceInterfaceName = resolveServiceInterfaceName(serviceType, serviceAnnotation);
serviceRestMetadata.setServiceInterface(serviceInterfaceName);
serviceRestMetadata.setGroup(getGroup(serviceAnnotation));
serviceRestMetadata.setVersion(getVersion(serviceAnnotation));
TypeElement serviceInterfaceType = elements.getTypeElement(serviceInterfaceName);
List<? extends ExecutableElement> serviceMethods = new LinkedList<>(getPublicNonStaticMethods(serviceInterfaceType, Object.class));
// Sorts
sort(serviceMethods, ExecutableElementComparator.INSTANCE);
serviceMethods.forEach(serviceMethod -> {
resolveRestMethodMetadata(processingEnv, serviceType, serviceInterfaceType, serviceMethod).ifPresent(serviceRestMetadata.getMeta()::add);
});
} finally {
clearCache();
}
info("The %s's process result : %s", processorName, serviceRestMetadata);
return serviceRestMetadata;
}
use of org.apache.dubbo.metadata.rest.ServiceRestMetadata in project dubbo by alibaba.
the class SpringMvcServiceRestMetadataResolverTest method testResolve.
@Test
public void testResolve() {
// Generated by "dubbo-metadata-processor"
ClassPathServiceRestMetadataReader reader = new ClassPathServiceRestMetadataReader("META-INF/dubbo/spring-mvc-servoce-rest-metadata.json");
List<ServiceRestMetadata> serviceRestMetadataList = reader.read();
ServiceRestMetadata expectedServiceRestMetadata = serviceRestMetadataList.get(0);
ServiceRestMetadata serviceRestMetadata = instance.resolve(SpringRestService.class);
List<RestMethodMetadata> meta1 = new LinkedList<>(expectedServiceRestMetadata.getMeta());
List<RestMethodMetadata> meta2 = new LinkedList<>(serviceRestMetadata.getMeta());
for (int i = 0; i < meta1.size(); i++) {
RestMethodMetadata restMethodMetadata = meta1.get(i);
RestMethodMetadata restMethodMetadata2 = meta2.get(i);
assertEquals(restMethodMetadata, restMethodMetadata2);
}
assertEquals(expectedServiceRestMetadata, serviceRestMetadata);
}
use of org.apache.dubbo.metadata.rest.ServiceRestMetadata in project dubbo by alibaba.
the class JAXRSServiceRestMetadataResolverTest method testResolve.
@Test
public void testResolve() {
// Generated by "dubbo-metadata-processor"
ClassPathServiceRestMetadataReader reader = new ClassPathServiceRestMetadataReader("META-INF/dubbo/jax-rs-service-rest-metadata.json");
List<ServiceRestMetadata> serviceRestMetadataList = reader.read();
ServiceRestMetadata expectedServiceRestMetadata = serviceRestMetadataList.get(0);
ServiceRestMetadata serviceRestMetadata = instance.resolve(StandardRestService.class);
List<RestMethodMetadata> meta1 = new LinkedList<>(expectedServiceRestMetadata.getMeta());
List<RestMethodMetadata> meta2 = new LinkedList<>(serviceRestMetadata.getMeta());
for (int i = 0; i < meta1.size(); i++) {
RestMethodMetadata restMethodMetadata = meta1.get(i);
RestMethodMetadata restMethodMetadata2 = meta2.get(i);
assertEquals(restMethodMetadata, restMethodMetadata2);
}
assertEquals(expectedServiceRestMetadata, serviceRestMetadata);
}
use of org.apache.dubbo.metadata.rest.ServiceRestMetadata in project dubbo by alibaba.
the class ServiceRestMetadataStorage method append.
public void append(Set<ServiceRestMetadata> serviceRestMetadata) throws IOException {
storage.read(SERVICE_REST_METADATA_RESOURCE_PATH, reader -> {
Gson gson = new Gson();
return (List) gson.fromJson(reader, getParameterized(List.class, ServiceRestMetadata.class).getType());
}).ifPresent(existedMetadata -> {
// Add all existed ServiceRestMetadata
serviceRestMetadata.addAll(existedMetadata);
});
write(serviceRestMetadata);
}
Aggregations