Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
gate
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
openmole
gate
Commits
68660f66
Commit
68660f66
authored
Dec 12, 2017
by
Mathieu leclaire
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Set minimal client/server app
parent
842cfd86
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
152 additions
and
44 deletions
+152
-44
build.sbt
build.sbt
+9
-30
Gate.scala
client/src/main/scala/client/Gate.scala
+55
-0
web.xml
server/src/main/resources/webapp/WEB-INF/web.xml
+0
-0
bootstrap.min.css
server/src/main/resources/webapp/css/bootstrap.min.css
+0
-0
styleWUI.css
server/src/main/resources/webapp/css/styleWUI.css
+0
-0
ScalatraBootstrap.scala
server/src/main/scala/ScalatraBootstrap.scala
+0
-12
ApiImpl.scala
server/src/main/scala/server/ApiImpl.scala
+10
-0
Launcher.scala
server/src/main/scala/server/Launcher.scala
+34
-0
Servlet.scala
server/src/main/scala/server/Servlet.scala
+42
-0
Shared.scala
shared/Shared.scala
+2
-2
No files found.
build.sbt
View file @
68660f66
...
...
@@ -12,21 +12,21 @@ val scalatagsVersion = "0.6.5"
val
autowireVersion
=
"0.2.6"
val
upickleVersion
=
"0.4.4"
val
rxVersion
=
"0.3.2"
val
scaladgetVersion
=
"0.9.
4
"
val
scaladgetVersion
=
"0.9.
5
"
val
scalajsDomVersion
=
"0.9.3"
val
jqueryVersion
=
"3.2.1"
val
Resolvers
=
Seq
(
Resolver
.
sonatypeRepo
(
"snapshots"
),
Resolver
.
sonatypeRepo
(
"staging"
),
"Typesafe repository"
at
"http://repo.typesafe.com/typesafe/releases/"
)
lazy
val
shared
=
project
.
in
(
file
(
"
./
shared"
)).
settings
(
lazy
val
shared
=
project
.
in
(
file
(
"shared"
)).
settings
(
scalaVersion
:=
ScalaVersion
)
lazy
val
client
=
project
.
in
(
file
(
"client"
))
settings
(
version
:=
Version
,
scalaVersion
:=
ScalaVersion
,
resolvers
in
ThisBuild
++=
Resolvers
,
skip
in
packageJSDependencies
:=
false
,
libraryDependencies
++=
Seq
(
"com.lihaoyi"
%%%
"autowire"
%
autowireVersion
,
...
...
@@ -44,7 +44,6 @@ lazy val server = project.in(file("server")) settings(
name
:=
Name
,
version
:=
Version
,
scalaVersion
:=
ScalaVersion
,
resolvers
++=
Resolvers
,
libraryDependencies
++=
Seq
(
"com.lihaoyi"
%%
"autowire"
%
autowireVersion
,
"com.lihaoyi"
%%
"upickle"
%
upickleVersion
,
...
...
@@ -63,33 +62,13 @@ lazy val bootstrap = project.in(file("target/bootstrap")) settings(
version
:=
Version
,
scalaVersion
:=
ScalaVersion
,
go
:=
{
val
clientTarget
=
(
fullOptJS
in
client
in
Compile
).
value
val
clientResource
=
(
resourceDirectory
in
client
in
Compile
).
value
val
serverTarget
=
(
target
in
server
in
Compile
).
value
val
clientJS
=
(
fullOptJS
in
client
in
Compile
).
value
copy
(
clientTarget
,
clientResource
,
new
File
(
serverTarget
,
"webapp"
))
}
)
dependsOn
(
client
,
server
)
val
serverReources
=
(
resourceDirectory
in
server
in
Compile
).
value
/
"webapp"
val
webappTarget
=
(
classDirectory
in
server
in
Compile
).
value
/
"webapp"
def
copy
(
clientTarget
:
Attributed
[
File
],
resources
:
File
,
webappServerTarget
:
File
)
=
{
clientTarget
.
map
{
ct
=>
val
depName
=
ct
.
getName
.
replace
(
"opt.js"
,
"jsdeps.min.js"
)
recursiveCopy
(
new
File
(
resources
,
"webapp"
),
webappServerTarget
)
recursiveCopy
(
ct
,
new
File
(
webappServerTarget
,
"js/"
+
ct
.
getName
))
recursiveCopy
(
new
File
(
ct
.
getParent
,
depName
),
new
File
(
webappServerTarget
,
"js/"
+
depName
))
IO
.
copyDirectory
(
serverReources
,
webappTarget
)
IO
.
copyFile
(
clientJS
.
data
,
webappTarget
/
"js/gate.js"
)
}
}
)
dependsOn
(
client
,
server
)
def
recursiveCopy
(
from
:
File
,
to
:
File
)
:
Unit
=
{
if
(
from
.
isDirectory
)
{
to
.
mkdirs
()
for
{
f
←
from
.
listFiles
()
}
recursiveCopy
(
f
,
new
File
(
to
,
f
.
getName
))
}
else
if
(!
to
.
exists
()
||
from
.
lastModified
()
>
to
.
lastModified
)
{
println
(
s
"Copy file $from to $to "
)
from
.
getParentFile
.
mkdirs
IO
.
copyFile
(
from
,
to
,
preserveLastModified
=
true
)
}
}
client/src/main/scala/client/Gate.scala
0 → 100644
View file @
68660f66
package
client
import
org.scalajs.dom
import
scala.concurrent.Future
import
scala.scalajs.js.annotation._
import
scala.scalajs.concurrent.JSExecutionContext.Implicits.runNow
import
scaladget.api.
{
BootstrapTags
=>
bs
}
import
scaladget.stylesheet.all._
import
scalatags.JsDom.all._
import
shared.Api
import
autowire._
@JSExportTopLevel
(
name
=
"client.Gate"
)
@JSExportAll
object
Gate
{
def
run
()
:
Unit
=
{
val
loginDiv
=
div
(
bs
.
input
()(
placeholder
:=
"Login"
,
color
:=
"red"
),
bs
.
input
()(
placeholder
:=
"Password"
)
)
val
logButton
=
button
(
btn_primary
,
"Run"
,
onclick
:=
{()
=>
Post
[
Api
].
login
.
call
().
foreach
{
l
=>
println
(
"Finished"
)
}})
dom
.
document
.
body
.
appendChild
(
div
(
// loginDiv,
logButton
).
render
)
}
}
object
Post
extends
autowire
.
Client
[
String
,
upickle.default.Reader
,
upickle.default.Writer
]
{
override
def
doCall
(
req
:
Request
)
:
Future
[
String
]
=
{
val
url
=
req
.
path
.
mkString
(
"/"
)
dom
.
ext
.
Ajax
.
post
(
url
=
"http://localhost:8080/"
+
url
,
data
=
upickle
.
default
.
write
(
req
.
args
)
).
map
{
_
.
responseText
}
}
def
read
[
Result:
upickle.default.Reader
](
p
:
String
)
=
upickle
.
default
.
read
[
Result
](
p
)
def
write
[
Result:
upickle.default.Writer
](
r
:
Result
)
=
upickle
.
default
.
write
(
r
)
}
client
/src/main/resources/webapp/WEB-INF/web.xml
→
server
/src/main/resources/webapp/WEB-INF/web.xml
View file @
68660f66
File moved
client
/src/main/resources/webapp/css/bootstrap.min.css
→
server
/src/main/resources/webapp/css/bootstrap.min.css
View file @
68660f66
File moved
client
/src/main/resources/webapp/css/styleWUI.css
→
server
/src/main/resources/webapp/css/styleWUI.css
View file @
68660f66
File moved
server/src/main/scala/ScalatraBootstrap.scala
deleted
100644 → 0
View file @
842cfd86
import
openmole.gate.server._
import
org.scalatra._
import
javax.servlet.ServletContext
class
ScalatraBootstrap
extends
LifeCycle
{
override
def
init
(
context
:
ServletContext
)
{
context
.
mount
(
new
Servlet
,
"/*"
)
}
}
\ No newline at end of file
server/src/main/scala/server/ApiImpl.scala
0 → 100644
View file @
68660f66
package
org.openmole.gate.server
import
shared._
object
ApiImpl
extends
Api
{
def
login
:
Unit
=
{
println
(
"LOGIN"
)
}
}
server/src/main/scala/server/Launcher.scala
0 → 100644
View file @
68660f66
package
server
import
javax.servlet.ServletContext
import
org.eclipse.jetty.server.Server
import
org.eclipse.jetty.webapp.WebAppContext
import
org.openmole.gate.server.Servlet
import
org.scalatra.LifeCycle
import
org.scalatra.servlet.ScalatraListener
object
Launcher
extends
App
{
val
server
=
new
Server
(
8080
)
val
context
=
new
WebAppContext
()
val
webapp
=
getClass
.
getClassLoader
.
getResource
(
"webapp"
).
toExternalForm
context
setContextPath
"/"
context
.
setResourceBase
(
webapp
)
context
.
setInitParameter
(
ScalatraListener
.
LifeCycleKey
,
classOf
[
GateBootstrap
].
getCanonicalName
)
context
.
addEventListener
(
new
ScalatraListener
)
server
.
setHandler
(
context
)
server
.
start
server
.
join
}
class
GateBootstrap
extends
LifeCycle
{
override
def
init
(
context
:
ServletContext
)
{
context
.
mount
(
new
Servlet
,
"/*"
)
}
}
\ No newline at end of file
server/src/main/scala/server/Servlet.scala
0 → 100644
View file @
68660f66
package
org.openmole.gate.server
import
org.scalatra._
import
scala.concurrent.duration._
import
scala.concurrent.Await
import
scalatags.Text.all._
import
scalatags.Text.
{
all
=>
tags
}
import
scala.concurrent.ExecutionContext.Implicits.global
import
shared._
object
AutowireServer
extends
autowire
.
Server
[
String
,
upickle.default.Reader
,
upickle.default.Writer
]
{
def
read
[
Result:
upickle.default.Reader
](
p
:
String
)
=
upickle
.
default
.
read
[
Result
](
p
)
def
write
[
Result:
upickle.default.Writer
](
r
:
Result
)
=
upickle
.
default
.
write
(
r
)
}
class
Servlet
extends
ScalatraServlet
{
val
basePath
=
"shared"
get
(
"/"
)
{
contentType
=
"text/html"
tags
.
html
(
tags
.
head
(
tags
.
meta
(
tags
.
httpEquiv
:=
"Content-Type"
,
tags
.
content
:=
"text/html; charset=UTF-8"
),
tags
.
link
(
tags
.
rel
:=
"stylesheet"
,
tags
.
`type`
:=
"text/css"
,
href
:=
"css/bootstrap.min.css"
),
tags
.
script
(
tags
.
`type`
:=
"text/javascript"
,
tags
.
src
:=
"js/gate.js"
)
),
tags
.
body
(
script
(
"client.Gate.run();"
)
)
)
}
post
(
s
"/$basePath/*"
)
{
Await
.
result
(
AutowireServer
.
route
[
Api
](
ApiImpl
)(
autowire
.
Core
.
Request
(
Seq
(
basePath
)
++
multiParams
(
"splat"
).
head
.
split
(
"/"
),
upickle
.
default
.
read
[
Map
[
String
,
String
]](
request
.
body
))
),
Duration
.
Inf
)
}
}
shared/Shared.scala
View file @
68660f66
package
openmole.gate.
shared
package
shared
trait
Api
{
def
uuid
()
:
String
=
java
.
util
.
UUID
.
randomUUID
.
toString
def
login
()
:
Unit
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment