@SuppressWarnings("unchecked")
public static List<FavoriteImage> buildDefaultFavoriteImages(ServiceHost host) {
List<FavoriteImage> images = new ArrayList<>();
try {
List<?> jsonImages = Utils.fromJson(FileUtil.getClasspathResourceAsString(POPULAR_IMAGES_FILE), List.class);
host.log(Level.INFO, "Default favorite images loaded.");
Function<FavoriteImage, String> createSelfLink = state -> {
return UriUtils.buildUriPath(FavoriteImagesService.FACTORY_LINK,
new StringBuilder().append(state.registry.replaceFirst("https?://", "")
.replaceAll("\\.", "-"))
.append('-')
.append(state.name.replaceAll("/", "-")
.replaceAll("\\.", "-"))
.toString());
};
jsonImages.forEach(i -> {
Map<String, String> imgObj = (Map<String, String>) i;
FavoriteImage state = new FavoriteImage();
state.name = imgObj.get(FavoriteImage.FIELD_NAME_NAME);
state.description = imgObj.get(FavoriteImage.FIELD_NAME_DESCRIPTION);
state.registry = imgObj.get(FavoriteImage.FIELD_NAME_REGISTRY);
state.documentSelfLink = createSelfLink.apply(state);
images.add(state);
});
} catch (NullPointerException | JsonSyntaxException e) {
host.log(Level.WARNING, "Unable to load default favorite images. " +
"Either the file is missing or it is malformed");
}
return images;
}