package org.restler.spring.data.util;
import org.restler.client.RestlerException;
import org.springframework.data.rest.core.annotation.RepositoryRestResource;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
public class RepositoryUtils {
public static String getRepositoryPath(Class<?> repositoryClass) {
RepositoryRestResource repositoryAnnotation = repositoryClass.getDeclaredAnnotation(RepositoryRestResource.class);
String repositoryUriString;
if (repositoryAnnotation == null || repositoryAnnotation.path().isEmpty()) {
Type entityType = ((ParameterizedType) repositoryClass.getGenericInterfaces()[0]).getActualTypeArguments()[0];
try {
repositoryUriString = Class.forName(entityType.getTypeName()).getSimpleName().toLowerCase() + "s";
} catch (ClassNotFoundException e) {
throw new RestlerException("Could not find class for repository's entity type " + entityType.getTypeName(), e);
}
} else {
repositoryUriString = repositoryAnnotation.path();
}
return repositoryUriString;
}
}