Skip to content

Commit c1cf78c

Browse files
committed
improved support for views
[JENKINS-59117]
1 parent c35fc77 commit c1cf78c

File tree

3 files changed

+42
-3
lines changed

3 files changed

+42
-3
lines changed

docs/Home.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ Browse the Jenkins issue tracker to see any [open issues](https://issues.jenkins
3434
## Release Notes
3535
* 1.77 (unreleased)
3636
* Increased the minimum supported Jenkins version to 2.138
37+
* Improved support for views
38+
([JENKINS-59117](https://issues.jenkins-ci.org/browse/JENKINS-59117))
3739
* Fixed problem with paths on Windows
3840
([JENKINS-53840](https://issues.jenkins-ci.org/browse/JENKINS-53840))
3941
* 1.76 (August 22 2019)

job-dsl-core/src/main/groovy/javaposse/jobdsl/dsl/views/NestedViewsContext.groovy

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,19 @@
11
package javaposse.jobdsl.dsl.views
22

3-
import javaposse.jobdsl.dsl.AbstractContext
3+
import javaposse.jobdsl.dsl.AbstractExtensibleContext
4+
import javaposse.jobdsl.dsl.ContextType
45
import javaposse.jobdsl.dsl.DslContext
56
import javaposse.jobdsl.dsl.JobManagement
67
import javaposse.jobdsl.dsl.Preconditions
78
import javaposse.jobdsl.dsl.View
89
import javaposse.jobdsl.dsl.ViewFactory
910

10-
class NestedViewsContext extends AbstractContext implements ViewFactory {
11+
@ContextType('hudson.model.View')
12+
class NestedViewsContext extends AbstractExtensibleContext implements ViewFactory {
1113
List<View> views = []
1214

1315
NestedViewsContext(JobManagement jobManagement) {
14-
super(jobManagement)
16+
super(jobManagement, null)
1517
}
1618

1719
/**
@@ -78,6 +80,16 @@ class NestedViewsContext extends AbstractContext implements ViewFactory {
7880
processView(name, DashboardView, closure)
7981
}
8082

83+
@Override
84+
protected void addExtensionNode(Node node) {
85+
views << new View(jobManagement, node['name'].text()) {
86+
@Override
87+
Node getNode() {
88+
node
89+
}
90+
}
91+
}
92+
8193
private <T extends View> T processView(String name, Class<T> viewClass, Closure closure) {
8294
Preconditions.checkNotNullOrEmpty(name, 'name must be specified')
8395

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package javaposse.jobdsl.dsl.views
2+
3+
import javaposse.jobdsl.dsl.JobManagement
4+
import spock.lang.Specification
5+
6+
class NestedViewsContextSpec extends Specification {
7+
private final JobManagement jobManagement = Mock(JobManagement)
8+
private final NestedViewsContext context = new NestedViewsContext(jobManagement)
9+
10+
def 'extension'() {
11+
given:
12+
Node viewNode = new NodeBuilder().'my.custom.CustomView' {
13+
name('myView')
14+
}
15+
16+
when:
17+
context.addExtensionNode(viewNode)
18+
19+
then:
20+
context.views != null
21+
context.views.size() == 1
22+
context.views[0].name == 'myView'
23+
context.views[0].node == viewNode
24+
}
25+
}

0 commit comments

Comments
 (0)