NamedDomainObjectContainer
から
class MyTestDomainObj {
//name属性は必ず定義し、初期化後は変更しないこと。
String name
String arr
public MyTestDomainObj(String name) {
this.name = name
}
void myArr(String arr) {
this.arr = arr
}
String toString() {
return "name = ${name}, arr = ${arr}"
}
}
//拡張を作成する
class TestExtension {
//NamedDomainObjectContainer プロパティを定義する。
NamedDomainObjectContainer<TestDomainObj> testDomains
public TestExtension(Project project) {
//プロジェクトを渡す.container(...) メソッドは NamedDomainObjectContainer を作成する。
NamedDomainObjectContainer<TestDomainObj> domainObjs = project.container(TestDomainObj)
testDomains = domainObjs
}
//をGradle DSL構文に対応させる
void testDomain(Action<NamedDomainObjectContainer<TestDomainObj>> action) {
action.execute(testDomains)
}
void test() {
//指定されたドメイン・オブジェクト・コンテナを繰り返し処理し、すべてのドメイン・オブジェクトの値を出力する。
testDomains.all { data ->
println data
}
}
}
//testという名前のExtensionを作成する
def testExt = getExtensions().create("test", TestExtension, project)
test {
testDomain {
domain2 {
msg "This is domain2"
}
domain1 {
msg "This is domain1"
}
domain3 {
msg "This is domain3"
}
}
}
task myTask << {
testExt.test()
}
依存関係にある実装関連のaarを取得します。
task getPrintln(name: "getManifest", group: "asm") {
doLast {
//実装を出力する
configurations.all { item ->
if (item.name == "implementation"){
item.getDependencies().all{data ->
if (data instanceof ProjectDependency){
println "------------" + data.dependencyProject.name
}else if (data instanceof Dependency){
def str = "------------" + data.getGroup()
+ ":" + data.getName()
+ ":" + data.getVersion()
println str
}else{
println data.getClass().getName();
}
}
}
}
}
}
ImmutableMap
//ImmutableMapを作成する:
Map<String,Object> immutableMap = new ImmutableMap.Builder<String,Object>().build();
//作成時に値を配置する。
Map<String,Object> immutableMap = new ImmutableMap.Builder<String,Object>()
.put("k1","v1")
.put("k2","v2")
.build();
//作成後は変更できない。
immutableMap.put("k1","v3");//をスローする。.lang.UnsupportedOperationException
ImmutableMapImmutableMapのkeyとvalueはNULLにすることはできず、NULL値を入れるとNPEを投げる。
ImmutableMapを使用する:
決定論的な設定、例えば、異なるキー値に対して異なるリクエストURLを指定する。
ユニットテストを書く
key, value未知のパラメーターの場合、nullの場合がある。




