Giter Site home page Giter Site logo

danielfernandez / reactive-matchday Goto Github PK

View Code? Open in Web Editor NEW
83.0 13.0 21.0 308 KB

Spring 5 showcase application with a Thymeleaf HTML5 interface

License: Apache License 2.0

Shell 7.12% Batchfile 5.05% Java 78.46% HTML 7.64% CSS 1.72%
thymeleaf webflux spring spring-boot mongodb reactive-streams sse

reactive-matchday's Issues

Problem testing WebFlux and MVC simultaneously

I would like to write an integration test for the matchStatusStream() of the MatchController . For this purpose I need to retrieve a matchId from /matches and use it to form the URL (/match/{matchId}/statusStream) for the WebTestClient. But it turns out that I cannot have both a MockMvc -like client that can retrieve MVC model attributes and a WebTestClient instance that can test the reactive endpoint in the same test. The nearest I came to is with these annotations for the test class:

@ExtendWith(SpringExtension.class)
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT,
        properties = "spring.main.web-application-type=reactive")
@AutoConfigureWebTestClient

Anything more, like @WebMvcTest, breaks the configuration. Is it at all possible to test heterogenous endpoints, like your (excellent!) example, one that returns HTML and one that returns a reactive flux?

Thanks in advance.

After upgrading to spring boot 2.0.0.M2 app is not working

I have upgraded spring boot version to 2.0.0.M2 and made necessary changes in Data.class in lines 318-321 as capped method signature is changed as below

.then(mongoTemplate.createCollection(
                               MatchEvent.class, CollectionOptions.empty().capped().size(104857600))) // max: 100MBytes
                       .then(mongoTemplate.createCollection(
                               MatchComment.class, CollectionOptions.empty().capped().size(104857600))) // max: 100MBytes

When I run the application it is starting with out error but when I hit localhost:8080 I get below error

2017-07-13 12:59:16.899  WARN 27472 --- [ctor-http-nio-2] i.n.u.concurrent.AbstractEventExecutor   : A task raised an exception. Task: reactor.ipc.netty.channel.ContextHandler$$Lambda$580/683007669@2fd7b40f

java.lang.NoSuchMethodError: org.thymeleaf.spring5.view.reactive.ThymeleafReactiveViewResolver.getApplicationContext()Lorg/springframework/context/ApplicationContext;
	at org.thymeleaf.spring5.view.reactive.ThymeleafReactiveViewResolver.loadView(ThymeleafReactiveViewResolver.java:581) ~[thymeleaf-spring5-3.0.6.M4.jar:3.0.6.M4]
	at org.thymeleaf.spring5.view.reactive.ThymeleafReactiveViewResolver.resolveViewName(ThymeleafReactiveViewResolver.java:569) ~[thymeleaf-spring5-3.0.6.M4.jar:3.0.6.M4]
	at org.springframework.web.reactive.result.view.ViewResolutionResultHandler.lambda$resolveViews$2(ViewResolutionResultHandler.java:272) ~[spring-webflux-5.0.0.RC2.jar:5.0.0.RC2]
	at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.drain(FluxConcatMap.java:350) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.onSubscribe(FluxConcatMap.java:205) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:89) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:54) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.FluxConcatMap.subscribe(FluxConcatMap.java:117) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.MonoCollectList.subscribe(MonoCollectList.java:57) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.MonoMapFuseable.subscribe(MonoMapFuseable.java:59) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.MonoFlatMap.subscribe(MonoFlatMap.java:59) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.MonoFlatMap$ThenMapMain.onNext(MonoFlatMap.java:146) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onNext(FluxSwitchIfEmpty.java:67) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.Operators$ScalarSubscription.request(Operators.java:1472) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.set(Operators.java:1288) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onSubscribe(Operators.java:1162) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.MonoJust.subscribe(MonoJust.java:54) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.MonoSwitchIfEmpty.subscribe(MonoSwitchIfEmpty.java:44) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.MonoFlatMap.subscribe(MonoFlatMap.java:59) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.MonoOnErrorResume.subscribe(MonoOnErrorResume.java:44) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.MonoFlatMap$ThenMapMain.onNext(MonoFlatMap.java:146) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:919) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.MonoFlatMap$ThenMapInner.onNext(MonoFlatMap.java:229) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:919) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.MonoThenIgnore$ThenAcceptInner.onNext(MonoThenIgnore.java:276) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:72) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onNext(FluxPeekFuseable.java:185) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:919) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.MonoFlatMap$ThenMapMain.onNext(MonoFlatMap.java:140) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:919) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.MonoWhen$WhenCoordinator.signal(MonoWhen.java:245) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.MonoWhen$WhenInner.onNext(MonoWhen.java:299) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onNext(FluxPeekFuseable.java:185) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.Operators$ScalarSubscription.request(Operators.java:1472) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.request(FluxPeekFuseable.java:128) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.MonoWhen$WhenInner.onSubscribe(MonoWhen.java:289) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onSubscribe(FluxPeekFuseable.java:161) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.MonoJust.subscribe(MonoJust.java:54) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.MonoPeekFuseable.subscribe(MonoPeekFuseable.java:77) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.MonoWhen$WhenCoordinator.subscribe(MonoWhen.java:174) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.MonoWhen.subscribe(MonoWhen.java:124) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.MonoFlatMap.subscribe(MonoFlatMap.java:59) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.MonoPeekFuseable.subscribe(MonoPeekFuseable.java:77) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.MonoOnErrorResume.subscribe(MonoOnErrorResume.java:44) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:53) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.MonoThenIgnore$ThenIgnoreMain.drain(MonoThenIgnore.java:147) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.MonoThenIgnore.subscribe(MonoThenIgnore.java:55) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.MonoFlatMap$ThenMapMain.onNext(MonoFlatMap.java:146) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onNext(FluxSwitchIfEmpty.java:67) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.MonoNext$NextSubscriber.onNext(MonoNext.java:76) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.innerNext(FluxConcatMap.java:265) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.FluxConcatMap$ConcatMapInner.onNext(FluxConcatMap.java:767) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onNext(FluxMapFuseable.java:115) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.Operators$ScalarSubscription.request(Operators.java:1472) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.request(FluxMapFuseable.java:156) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.set(Operators.java:1288) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onSubscribe(Operators.java:1162) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onSubscribe(FluxMapFuseable.java:90) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.MonoJust.subscribe(MonoJust.java:54) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.MonoMapFuseable.subscribe(MonoMapFuseable.java:59) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.drain(FluxConcatMap.java:409) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.onSubscribe(FluxConcatMap.java:205) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:89) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:54) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.FluxConcatMap.subscribe(FluxConcatMap.java:117) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.MonoNext.subscribe(MonoNext.java:40) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.MonoSwitchIfEmpty.subscribe(MonoSwitchIfEmpty.java:44) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.MonoFlatMap.subscribe(MonoFlatMap.java:59) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.MonoFlatMap.subscribe(MonoFlatMap.java:59) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.MonoOnErrorResume.subscribe(MonoOnErrorResume.java:44) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.MonoOnErrorResume.subscribe(MonoOnErrorResume.java:44) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.MonoThenIgnore$ThenIgnoreMain.drain(MonoThenIgnore.java:165) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.MonoThenIgnore.subscribe(MonoThenIgnore.java:55) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.MonoOnErrorResume.subscribe(MonoOnErrorResume.java:44) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.core.publisher.MonoPeekTerminal.subscribe(MonoPeekTerminal.java:60) ~[reactor-core-3.1.0.M2.jar:3.1.0.M2]
	at reactor.ipc.netty.channel.ChannelOperations.applyHandler(ChannelOperations.java:382) ~[reactor-netty-0.6.4.RELEASE.jar:0.6.4.RELEASE]
	at reactor.ipc.netty.http.server.HttpServerOperations.onHandlerStart(HttpServerOperations.java:354) ~[reactor-netty-0.6.4.RELEASE.jar:0.6.4.RELEASE]
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163) ~[netty-common-4.1.12.Final.jar:4.1.12.Final]
	at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:403) [netty-common-4.1.12.Final.jar:4.1.12.Final]
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:462) [netty-transport-4.1.12.Final.jar:4.1.12.Final]
	at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858) [netty-common-4.1.12.Final.jar:4.1.12.Final]
	at java.lang.Thread.run(Thread.java:745) [na:1.8.0_101]

Can you please fix the issue

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.