我的问题是我有两个或更多包含不同类型的Optionals.我想执行一个只有在所有选项都不为空时才能执行的操作.
目前我这样做:
Optional<PatientCase> caseOptional = patientCaseRepository.findOneById(caseId);
Optional<User> userOptional = userRepository.findOneById(caseId);
if(userOptional.isPresent() && caseOptional.isPresent()) {
caseOptional.get().getProcess().setDesigner(userOptional.get());
}
Run Code Online (Sandbox Code Playgroud)
在我看来,if条件感觉不对.我知道可以使用orElse链接Optionals.但在我的情况下,我不想要一个合乎逻辑的Else.有没有办法创建和AND运算符,以组合两个或更多类似于这个PSEUDO代码的Optionals?
caseOptional.and.userOptional.ifPresent((theCase,user) -> //Perform Stuff);
Run Code Online (Sandbox Code Playgroud) 我正在编写一个Angular应用程序,它使用ReactiveX API来处理异步操作.我之前在Android项目中使用过API,我非常喜欢它如何简化并发任务处理.但有一件事我不确定如何以正确的方式解决.
如何从正在进行的任务中更新观察者?在这种情况下的任务将花费时间来加载/创建复杂/大型对象,并且我能够返回中间进度,但不能返回对象本身.observable只能返回一个dataType.因此,我知道两种可能性.
创建一个具有进度字段和数据字段的对象.可以使用Observable.onNext(object)返回此对象.progress字段将在每个onNext上更新,而data字段为空,直到最后一个onNext,这将把它设置为加载的值.
创建两个可观察对象,一个数据可观察对象和一个进度可观察对象.观察者可以订阅进度更新可观察的进度以及最终加载/创建数据时可通知的数据.这些也可以选择性地压缩在一起进行一次订阅.
我使用了这两种技术,它们都有效,但我想知道是否有统一的标准,干净的方式,如何解决这个任务.当然,它也可以是一个全新的.我为每个解决方案开放.
我正在开发一个Spring Boot Server Project,它提供了简单的REST资源,直到现在.为了将通知推送到客户端,我想添加一个websocket连接.为了测试这种连接,我使用基于本教程的SockJS客户端编写了一个集成测试:
http://rafaelhz.github.io/testing-websockets/
问题是Connection被拒绝,并出现以下错误:
org.springframework.web.client.ResourceAccessException: I/O error on GET request for "http://localhost:9090/websocket/info": Connection refused (Connection refused); nested exception is java.net.ConnectException: Connection refused (Connection refused)
Run Code Online (Sandbox Code Playgroud)
我的Websocket配置如下:
import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
import org.springframework.web.socket.config.annotation.AbstractWebSocketMessageBrokerConfigurer;
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
config.enableSimpleBroker("/topic");
config.setApplicationDestinationPrefixes("/app");
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry
.addEndpoint("/websocket")
.setAllowedOrigins("*")
.withSockJS();
}
}
Run Code Online (Sandbox Code Playgroud)
我可以看到套接字端点映射到日志中:
2017-07-14 15:22:59.561 INFO 13765 --- [ main] o.s.w.s.s.s.WebSocketHandlerMapping : Mapped URL path [/websocket/**] …Run Code Online (Sandbox Code Playgroud) java ×1
java-8 ×1
java-stream ×1
observable ×1
optional ×1
progress ×1
reactivex ×1
rx-java ×1
rxjs ×1
sockjs ×1
spring-boot ×1
websocket ×1