diff --git a/jpro-routing/core/src/main/scala/one/jpro/platform/routing/Request.scala b/jpro-routing/core/src/main/scala/one/jpro/platform/routing/Request.scala index e04c1f88..13e3334f 100644 --- a/jpro-routing/core/src/main/scala/one/jpro/platform/routing/Request.scala +++ b/jpro-routing/core/src/main/scala/one/jpro/platform/routing/Request.scala @@ -78,17 +78,22 @@ object Request { Request.fromString(s).copy(oldContent = oldViewW, origOldContent = oldViewW) } def fromString(s: String): Request = { - if(!isValidLink(s)) { - logger.warn("Warning - Invalid Link: " + s) + try { + if(!isValidLink(s)) { + logger.warn("Warning - Invalid Link: " + s) + } + val uri = new URI(s) + val rawQuery = uri.getRawQuery + val query: Map[String,String] = if(rawQuery == null || rawQuery == "") Map() else rawQuery.split("&").map(x => { + val Array(a,b) = x.split("=") + a -> b + }).toMap + val path = uri.getPath + val res = Request(s, uri.getScheme, uri.getHost, uri.getPort, path,path,"/", query,wref_null,wref_null) + res + } catch { + case e: Exception => + throw new RuntimeException("Could not parse Request from string: " + s, e) } - val uri = new URI(s) - val rawQuery = uri.getRawQuery - val query: Map[String,String] = if(rawQuery == null || rawQuery == "") Map() else rawQuery.split("&").map(x => { - val Array(a,b) = x.split("=") - a -> b - }).toMap - val path = uri.getPath - val res = Request(s, uri.getScheme, uri.getHost, uri.getPort, path,path,"/", query,wref_null,wref_null) - res } } diff --git a/jpro-routing/core/src/main/scala/one/jpro/platform/routing/crawl/AppCrawler.scala b/jpro-routing/core/src/main/scala/one/jpro/platform/routing/crawl/AppCrawler.scala index 6a13089d..5337740f 100644 --- a/jpro-routing/core/src/main/scala/one/jpro/platform/routing/crawl/AppCrawler.scala +++ b/jpro-routing/core/src/main/scala/one/jpro/platform/routing/crawl/AppCrawler.scala @@ -112,6 +112,16 @@ object AppCrawler { crawler.crawlAll() } + def routeToRouteNode(route: Route): RouteNode = { + val stage = new Stage + val routeNode = new RouteNode(stage) + stage.setScene(new Scene(routeNode)) + val sm = new SessionManagerDesktop(routeNode) + routeNode.setRoute(route) + routeNode.start(sm) + routeNode + } + def getImageURL(x: Image): String = { if(x.getUrl == null) return null; val url = simplifyAndEncode(x.getUrl) @@ -185,6 +195,7 @@ class AppCrawler(prefix: String, createApp: Supplier[RouteNode]) { val app: RouteNode = inFX(createApp.get()) val result = inFX { LinkUtil.getSessionManager(app) + val request = Request.fromString(crawlNext) app.getRoute()(Request.fromString(crawlNext)) }.future.await result match { @@ -235,7 +246,12 @@ class AppCrawler(prefix: String, createApp: Supplier[RouteNode]) { def crawlAll(): CrawlReportApp = { while (toIndex.nonEmpty) { - doStep() + try { + doStep() + } catch { + case ex: Throwable => + logger.error("Error in crawlAll", ex) + } } CrawlReportApp((indexed -- redirects -- deadLinks).toList, reports.reverse, deadLinks.toList) diff --git a/jpro-routing/example/src/main/scala/example/scala/TestWebApplication.scala b/jpro-routing/example/src/main/scala/example/scala/TestWebApplication.scala index 0963d93f..84fba3ce 100644 --- a/jpro-routing/example/src/main/scala/example/scala/TestWebApplication.scala +++ b/jpro-routing/example/src/main/scala/example/scala/TestWebApplication.scala @@ -14,11 +14,13 @@ import simplefx.core._ import scala.collection.JavaConverters.asScalaBufferConverter -class MyApp(stage: Stage) extends RouteNode(stage) { +class TestWebApplication extends RouteApp { - stylesheets ::= "test.css" + override def createRoute(): Route = { + if(getRouteNode() != null) { + getRouteNode().stylesheets ::= "test.css" + } - setRoute( Route.empty() .and(get("", (r) => Response.view(new MainView))) .and(get("/", (r) => Response.view(new MainView))) @@ -44,11 +46,9 @@ class MyApp(stage: Stage) extends RouteNode(stage) { .and(get("/it's\" tricky", (r) => Response.view(new MainView))) .filter(DevFilter.create) .filter(StatisticsFilter.create) - ) + } + - // addTransition{ case (null,view2,true ) => PageTransition.InstantTransition } - // addTransition{ case (view,view2,true ) => PageTransition.MoveDown } - // addTransition{ case (view,view2,false) => PageTransition.MoveUp } } class Header(view: View, sessionManager: SessionManager) extends HBox { @@ -368,15 +368,3 @@ class ParalaxPage extends Page { } - - -object TestWebApplication extends App -@SimpleFXApp class TestWebApplication { - val app = new MyApp(stage) - if(WebAPI.isBrowser) { - root = app - } else { - scene = new Scene(app, 1400,800) - } - app.start(SessionManager.getDefault(app,stage)) -} diff --git a/jpro-routing/example/src/main/scala/example/scala/TestWebApplicationHTTP.scala b/jpro-routing/example/src/main/scala/example/scala/TestWebApplicationHTTP.scala new file mode 100644 index 00000000..e1ebec62 --- /dev/null +++ b/jpro-routing/example/src/main/scala/example/scala/TestWebApplicationHTTP.scala @@ -0,0 +1,19 @@ +package example.scala + +import example.colors.{ColorsApp, ColorsHTTP} +import one.jpro.platform.routing.Route +import one.jpro.platform.routing.server.RouteHTTP + + +object TestWebApplicationHTTP { + def main(args: Array[String]): Unit = { + new TestWebApplicationHTTP().start() + } +} +class TestWebApplicationHTTP extends RouteHTTP { + + override def getRoute: Route = { + new TestWebApplication().createRoute() + } + +}