Size: a a a

2020 June 08

ea

evgeny afanasev in Java & Co
ребят. Вопрос по стрим апи. А как сделать противоположность ? То есть брать не те, которые пустые, а наоброт ?
У меня получается такое выражение filter(String::isEmpty)
источник

МК

Максим Калашников... in Java & Co
и что тебя смущает?
источник

ea

evgeny afanasev in Java & Co
тут я фильтрую части массива, которые пустые,но мне нужно работать с частями массива, которые не пустые. Как я понял стандартный воскл знак не работает в стрим апи
источник

МК

Максим Калашников... in Java & Co
ниче не понял
источник

IF

Ilya Frontend in Java & Co
ему нужен метод не isEmpty а isNotEmpty
источник

ea

evgeny afanasev in Java & Co
Ilya Frontend
ему нужен метод не isEmpty а isNotEmpty
А  а такого  ус тринга нет
источник

IF

Ilya Frontend in Java & Co
evgeny afanasev
А  а такого  ус тринга нет
напиши свой
источник

G

Galv in Java & Co
evgeny afanasev
тут я фильтрую части массива, которые пустые,но мне нужно работать с частями массива, которые не пустые. Как я понял стандартный воскл знак не работает в стрим апи
тоже про воскл знак подумал))
источник

ea

evgeny afanasev in Java & Co
Ну ахуеть теперь. Я думал можно как-то облегчить жизнь себе
источник

IF

Ilya Frontend in Java & Co
ну это же не выражение типо true false а метод, офк там не работает воскл знак
источник

ea

evgeny afanasev in Java & Co
Короче  ладно. Сделал по другому
источник

G

Galv in Java & Co
так можно же вместо обращения к методу сделать через лямбду и в ней уже ! применить
источник

ea

evgeny afanasev in Java & Co
А я так и сделал
источник

G

Galv in Java & Co
strings.stream().filter(x -> !x.isEmpty());
источник

t

tamafjpj in Java & Co
Predicate.not(String::isEmpty)
источник

t

tamafjpj in Java & Co
evgeny afanasev
Короче  ладно. Сделал по другому
Так можно
источник

C

Cyclone in Java & Co
Круто, не знал про Predicate.not
источник

C

Cyclone in Java & Co
Чуваки, маленькая джава-программа на сервлетах (без спринга), в основном занимается скачиванием блобов из oracle и отдачей потребителю через web. Работает на внешем томкете, всё ок.

Пишу тест на repository, без веба. Основное отличие в том, что datasource теперь не в сервлет-контейнере, а надо сделать самому.
// код условный
Создаём DataSource ds = new OracleDataSource(username, password, dbUrl);
MyRepository repo = new MyRepository(ds);
MyBlob myBlob = repo.getMyBlob(id);

// ассертим
assertAll(() -> assertEquals("expected-filename", myBlob.getFilename())
   , () -> assertEquals("expected-mimetype", content.getMimetype()));

Пока всё хорошо, запись считалась из БД, строки совпадают с ожиданиями.
Проверим само содержимое блоба в myBlob.inputStream, для простоты получим byte[].

IOUtils.toByteArray(myBlob.getInputStream())

Падаем с java.io.IOException: Закрытое соединение
at oracle.jdbc.driver.OracleBlobInputStream.needBytes(OracleBlobInputStream.java:232)
Caused by: java.sql.SQLRecoverableException: Закрытое соединение
at oracle.sql.BLOB.getDBAccess(BLOB.java:1049)

В некотором роде это понятно, т.к. в коде MyRepository обычные try-with-resources
try(Connection connection = datasource.getConnection()
PreparedStatement ...
ResultSet rs...
) {
return new MyBlob(rs.getString("filename"), rs.getBlob("blob").getBinaryStream());
} // connection закрылся

А на томкете почему оно работает, не смотря на то, что connection, очевидно, закрылся?
Это разруливает коннекшен-пул на томкете?
источник

VS

Vitaly Sirotkin in Java & Co
Cyclone
Чуваки, маленькая джава-программа на сервлетах (без спринга), в основном занимается скачиванием блобов из oracle и отдачей потребителю через web. Работает на внешем томкете, всё ок.

Пишу тест на repository, без веба. Основное отличие в том, что datasource теперь не в сервлет-контейнере, а надо сделать самому.
// код условный
Создаём DataSource ds = new OracleDataSource(username, password, dbUrl);
MyRepository repo = new MyRepository(ds);
MyBlob myBlob = repo.getMyBlob(id);

// ассертим
assertAll(() -> assertEquals("expected-filename", myBlob.getFilename())
   , () -> assertEquals("expected-mimetype", content.getMimetype()));

Пока всё хорошо, запись считалась из БД, строки совпадают с ожиданиями.
Проверим само содержимое блоба в myBlob.inputStream, для простоты получим byte[].

IOUtils.toByteArray(myBlob.getInputStream())

Падаем с java.io.IOException: Закрытое соединение
at oracle.jdbc.driver.OracleBlobInputStream.needBytes(OracleBlobInputStream.java:232)
Caused by: java.sql.SQLRecoverableException: Закрытое соединение
at oracle.sql.BLOB.getDBAccess(BLOB.java:1049)

В некотором роде это понятно, т.к. в коде MyRepository обычные try-with-resources
try(Connection connection = datasource.getConnection()
PreparedStatement ...
ResultSet rs...
) {
return new MyBlob(rs.getString("filename"), rs.getBlob("blob").getBinaryStream());
} // connection закрылся

А на томкете почему оно работает, не смотря на то, что connection, очевидно, закрылся?
Это разруливает коннекшен-пул на томкете?
Да, скорее всего это конекшен пул
источник

C

Cyclone in Java & Co
Vitaly Sirotkin
Да, скорее всего это конекшен пул
Переехал на локальный connection pool. Так работает.
А есть понимание, как это работает?
Типа он перехватил открытие стрима к блобу уже после закрытия коннекшена и открыл новое?
источник