1
1
package cucumber .runtime .scala
2
2
3
- import java .util .{List => JList }
4
-
5
- import gherkin .pickles .PickleStep
6
3
import java .lang .reflect .Modifier
7
4
import java .net .URI
5
+ import java .util .{List => JList }
8
6
9
- import cucumber .runtime .snippets .SnippetGenerator
10
- import cucumber .runtime .snippets .FunctionNameGenerator
11
7
import cucumber .api .scala .ScalaDsl
12
- import cucumber .runtime .ClassFinder
13
- import cucumber .runtime .io .ResourceLoaderClassFinder
14
- import cucumber .runtime .io .ResourceLoader
15
- import cucumber .runtime .io .MultiLoader
16
- import cucumber .runtime .Backend
17
- import cucumber .runtime .Glue
8
+ import cucumber .runtime .{Backend , Glue }
9
+ import cucumber .runtime .io .{ResourceLoader , ResourceLoaderClassFinder }
10
+ import cucumber .runtime .snippets .{FunctionNameGenerator , SnippetGenerator }
11
+ import gherkin .pickles .PickleStep
18
12
import io .cucumber .stepexpression .TypeRegistry
19
13
20
14
import scala .collection .JavaConverters ._
21
15
22
- class ScalaBackend (resourceLoader: ResourceLoader , typeRegistry : TypeRegistry ) extends Backend {
16
+ class ScalaBackend (resourceLoader : ResourceLoader , typeRegistry : TypeRegistry ) extends Backend {
23
17
private val snippetGenerator = new SnippetGenerator (new ScalaSnippetGenerator (), typeRegistry.parameterTypeRegistry())
24
- private var instances : Seq [ScalaDsl ] = Nil
18
+ private var instances : Seq [ScalaDsl ] = Nil
19
+
25
20
26
-
27
21
def getStepDefinitions = instances.flatMap(_.getStepDefs(typeRegistry))
28
22
29
23
def getBeforeHooks = instances.flatMap(_.beforeHooks)
@@ -34,49 +28,65 @@ class ScalaBackend(resourceLoader:ResourceLoader, typeRegistry: TypeRegistry) ex
34
28
35
29
def getBeforeStepHooks = instances.flatMap(_.beforeStepHooks)
36
30
37
- def disposeWorld () : Unit = { instances = Nil }
31
+ def disposeWorld (): Unit = {
32
+ instances = Nil
33
+ }
38
34
39
35
def getSnippet (step : PickleStep , keyword : String , functionNameGenerator : FunctionNameGenerator ) = snippetGenerator.getSnippet(step, keyword, functionNameGenerator)
40
36
41
- def buildWorld () : Unit = {
37
+ def buildWorld (): Unit = {
42
38
// I don't believe scala has to do anything to clean out its world
43
39
}
44
40
45
- def loadGlue (glue : Glue , gluePaths : JList [URI ]) : Unit = {
41
+ def loadGlue (glue : Glue , gluePaths : JList [URI ]): Unit = {
46
42
47
43
val cl = Thread .currentThread().getContextClassLoader
48
44
val classFinder = new ResourceLoaderClassFinder (resourceLoader, cl)
49
45
val packages = gluePaths.asScala
50
- val dslClasses = packages flatMap { classFinder.getDescendants(classOf [ScalaDsl ], _).asScala } filter { cls =>
46
+ val dslClasses = packages flatMap {
47
+ classFinder.getDescendants(classOf [ScalaDsl ], _).asScala
48
+ } filter { cls =>
51
49
try {
52
50
cls.getDeclaredConstructor()
53
51
true
54
52
} catch {
55
- case e : Throwable => false
53
+ case e : Throwable => false
56
54
}
57
55
}
58
56
59
57
val (clsClasses, objClasses) = dslClasses partition { cls =>
60
58
try {
61
- Modifier .isPublic (cls.getConstructor().getModifiers)
59
+ Modifier .isPublic(cls.getConstructor().getModifiers)
62
60
} catch {
63
- case e : Throwable => false
61
+ case e : Throwable => false
64
62
}
65
63
}
66
- val objInstances = objClasses map {cls =>
64
+ val objInstances = objClasses map { cls =>
67
65
val instField = cls.getDeclaredField(" MODULE$" )
68
66
instField.setAccessible(true )
69
67
instField.get(null ).asInstanceOf [ScalaDsl ]
70
68
}
71
- val clsInstances = clsClasses.map {_.newInstance()}
69
+ val clsInstances = clsClasses.map {
70
+ _.newInstance()
71
+ }
72
72
73
73
instances = objInstances.toSeq ++ clsInstances
74
74
75
- getStepDefinitions map {glue.addStepDefinition(_)}
76
- getBeforeHooks map {glue.addBeforeHook(_)}
77
- getAfterHooks map {glue.addAfterHook(_)}
78
- getAfterStepHooks map {glue.addAfterStepHook(_)}
79
- getBeforeStepHooks map {glue.addBeforeStepHook(_)}
75
+ getStepDefinitions map {
76
+ glue.addStepDefinition(_)
77
+ }
78
+ getBeforeHooks map {
79
+ glue.addBeforeHook(_)
80
+ }
81
+ getAfterHooks map {
82
+ glue.addAfterHook(_)
83
+ }
84
+ getAfterStepHooks map {
85
+ glue.addAfterStepHook(_)
86
+ }
87
+ getBeforeStepHooks map {
88
+ glue.addBeforeStepHook(_)
89
+ }
80
90
()
81
91
}
82
92
0 commit comments