use of org.glassfish.api.admin.RestEndpoint in project Payara by payara.
the class CommandResourceMetaData method getRestRedirectPointToBean.
@SuppressWarnings("unchecked")
public static List<CommandResourceMetaData> getRestRedirectPointToBean(String beanName) {
synchronized (restRedirects) {
if (restRedirects.isEmpty()) {
final ServiceLocator habitat = Globals.getDefaultHabitat();
processConfigBeans(habitat);
List<ActiveDescriptor<?>> iter = habitat.getDescriptors(BuilderHelper.createContractFilter(AdminCommand.class.getName()));
for (ActiveDescriptor<?> ad : iter) {
if (!(ad.getQualifiers().contains(RestEndpoints.class.getName()))) {
continue;
}
if (!ad.isReified()) {
try {
habitat.reifyDescriptor(ad);
} catch (MultiException me) {
// If we can't see the command, forget it
continue;
}
}
final Class<? extends AdminCommand> clazz = (Class<? extends AdminCommand>) ad.getImplementationClass();
RestEndpoints endpoints = clazz.getAnnotation(RestEndpoints.class);
if (endpoints != null) {
RestEndpoint[] list = endpoints.value();
if ((list != null) && (list.length > 0)) {
for (RestEndpoint endpoint : list) {
Service service = clazz.getAnnotation(Service.class);
String configBean = endpoint.configBean().getSimpleName();
CommandResourceMetaData metaData = new CommandResourceMetaData();
metaData.command = service.name();
metaData.httpMethod = endpoint.opType().name();
metaData.resourcePath = endpoint.path().isEmpty() ? service.name() : endpoint.path();
metaData.displayName = endpoint.description().isEmpty() ? metaData.resourcePath : endpoint.description();
metaData.commandParams = new ParameterMetaData[endpoint.params().length];
int index = 0;
for (RestParam param : endpoint.params()) {
ParameterMetaData currentParam = new ParameterMetaData();
metaData.commandParams[index] = currentParam;
currentParam.name = param.name();
currentParam.value = param.value();
index++;
}
addCommandMetaData(configBean, metaData);
}
}
}
}
}
}
return restRedirects.get(beanName);
}
Aggregations