@SuppressWarnings("unchecked") @Override public <T extends DataSerializable> Optional<List<T>> getSerializableList(DataQuery path, Class<T> clazz) { checkNotNull(path, "path"); checkNotNull(clazz, "clazz"); return Stream.<Supplier<Optional<List<T>>>>of( () -> { if (clazz.isAssignableFrom(CatalogType.class)) { return (Optional<List<T>>) (Optional<?>) getCatalogTypeList(path, (Class<? extends CatalogType>) clazz); } return Optional.empty(); }, () -> getViewList(path).flatMap(list -> Sponge.getDataManager().getBuilder(clazz).map(builder -> list.stream() .map(builder::build) .filter(Optional::isPresent) .map(Optional::get) .collect(Collectors.toList()) ) ) ) .map(Supplier::get) .filter(Optional::isPresent) .map(Optional::get) .findFirst(); }
@SuppressWarnings("unchecked") @Override public <T extends DataSerializable> Optional<T> getSerializable(DataQuery path, Class<T> clazz) { checkNotNull(path, "path"); checkNotNull(clazz, "clazz"); if (clazz.isAssignableFrom(CatalogType.class)) { final Optional<T> catalog = (Optional<T>) getCatalogType(path, ((Class<? extends CatalogType>) clazz)); if (catalog.isPresent()) { return catalog; } } return getUnsafeView(path).flatMap(view -> Sponge.getDataManager().getBuilder(clazz) .flatMap(builder -> builder.build(view)) ); }
private static void initGame() throws Exception { // Need to mock the service Sadly, this takes the most amount of time DataManager service = mock(DataManager.class); DataBuilder<SimpleData> builder = new SimpleDataBuilder(); TestHooks.setInstance("dataManager", service); when(service.getBuilder(SimpleData.class)).thenReturn(Optional.of(builder)); when(service.getTranslator(Mockito.any())).thenReturn(Optional.empty()); }
@SuppressWarnings("unchecked") @Override public <T extends DataSerializable> Optional<T> getSerializable(DataQuery path, Class<T> clazz) { checkNotNull(path, "path"); checkNotNull(clazz, "clazz"); if (clazz.isAssignableFrom(CatalogType.class)) { final Optional<T> catalog = (Optional<T>) getCatalogType(path, ((Class<? extends CatalogType>) clazz)); if (catalog.isPresent()) { return catalog; } } return getUnsafeView(path).flatMap(view -> Sponge.getDataManager().getBuilder(clazz) .flatMap(builder -> builder.build(view)) ); }
@SuppressWarnings("unchecked") @Override public <T extends DataSerializable> Optional<List<T>> getSerializableList(DataQuery path, Class<T> clazz) { checkNotNull(path, "path"); checkNotNull(clazz, "clazz"); return Stream.<Supplier<Optional<List<T>>>>of( () -> { if (clazz.isAssignableFrom(CatalogType.class)) { return (Optional<List<T>>) (Optional<?>) getCatalogTypeList(path, (Class<? extends CatalogType>) clazz); } return Optional.empty(); }, () -> getViewList(path).flatMap(list -> Sponge.getDataManager().getBuilder(clazz).map(builder -> list.stream() .map(builder::build) .filter(Optional::isPresent) .map(Optional::get) .collect(Collectors.toList()) ) ) ) .map(Supplier::get) .filter(Optional::isPresent) .map(Optional::get) .findFirst(); }