Estoy tratando de utilizar una Stream
en orElse
y tener dificultad para comprender el error.
collectorConfiguration = Optional.ofNullable(recapPlacement.getAttId())
.map(attId -> Optional.ofNullable(processorEngine.buildFrimFromAttId(attId))
.orElseThrow( () -> new OmegaException("UnableToFirmByAttId", recapPlacement.getAttId())))
.orElse( () -> Optional.ofNullable(collectorConfigurations.stream() //getting error here
.filter(cc -> recapPlacement.getPnetCode().equals(cc.getPnetCode()))
.filter(Objects::nonNull)
.findFirst())
.orElseThrow( () -> new OmegaException("CollectorCouldNotMapForPnetCode", recapPlacement.getPnetCode()))
);
En general en el código anterior que estoy tratando de
obtener
collectorConfig
siattId
no es nulosi
attId
no es nulo ycollectorConfig
no encontrado para que laattId
excepción a continuación, estoy tirandosi
attId
es nulo entonces yo estoy usandopnet
código para obtenercollectConfig
descargándolocollectConfigurations
listasi
collectConfig
no se encuentra apnetCode
continuación, estoy tirando excepción
Se trata de dar un error de compilación ' Target type of a lambda expression must be an interface
' en el orElse
bloque.
Es posible que desee reemplazar
.orElse( () -> Optional.ofNullable(collectorConfigurations.stream() //getting error here
con Optional.orElseGet
el que espera una Supplier
como:
.orElseGet( () -> Optional.ofNullable(collectorConfigurations.stream() ...
Además de lo anterior, no debería ser necesario el Optional.ofNullable
en el proveedor
.orElseGet( () -> collectorConfigurations.stream()
.filter(cc -> recapPlacement.getPnetCode().equals(cc.getPnetCode()))
.filter(Objects::nonNull) //non-null filtered
.findFirst()) // optional
.orElseThrow( () -> new OmegaException("CollectorCouldNotMapForPnet...