/
build.gradle
41 lines (39 loc) · 1.08 KB
/
build.gradle
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
// tag::type-declaration[]
@Managed interface MyComponent extends ComponentSpec {
String getPublicData()
void setPublicData(String data)
}
@Managed interface MyComponentInternal extends MyComponent {
String getInternalData()
void setInternalData(String internal)
}
// end::type-declaration[]
// tag::type-registration[]
// tag::internal-view-mutation[]
class MyPlugin extends RuleSource {
// end::internal-view-mutation[]
@ComponentType
void registerMyComponent(TypeBuilder<MyComponent> builder) {
builder.internalView(MyComponentInternal)
}
// end::type-registration[]
// tag::internal-view-mutation[]
@Mutate
void mutateMyComponents(ModelMap<MyComponentInternal> components) {
components.all { component ->
component.publicData = "Some PUBLIC data"
component.internalData = "Some INTERNAL data"
}
}
// tag::type-registration[]
}
// end::type-registration[]
// end::internal-view-mutation[]
// tag::build-script[]
apply plugin: MyPlugin
model {
components {
my(MyComponent)
}
}
// end::build-script[]