Ich habe einen benutzerdefinierten Builder in Groovy erstellt, indem ich BuilderSupport erweitert habe. Es funktioniert gut, wenn wie fast jeder Builder-Code-Beispiel da draußen konfiguriert:
def builder = new MyBuilder()
builder.foo {
"Some Entry" (property1:value1, property2: value2)
}
Das funktioniert natürlich perfekt. Das Problem ist, dass ich nicht möchte, dass die Informationen, die ich aufbaue, im Code stehen. Ich möchte diese Informationen irgendwo in einer Datei haben, die vom Builder eingelesen und in Objekte eingebaut wird. Ich kann nicht herausfinden, wie man das macht.
Ich kann das nicht einmal durch Verschieben des einfachen Eintrags im Code zum Laufen bringen. Dies funktioniert:
def textClosure = { "Some Entry" (property1:value1, property2: value2) }
builder.foo(textClosure)
weil textClosure ein Abschluss ist.
Wenn ich das tue:
def text = '"Some Entry" (property1:value1, property2: value2)'
def textClosure = { text }
builder.foo(textClosure)
der Builder wird nur für den Knoten "foo" aufgerufen. Ich habe viele Varianten ausprobiert, einschließlich der Übergabe des Textblocks direkt in den Builder, ohne ihn in eine Schließung zu verpacken. Sie alle führen zum gleichen Ergebnis.
Gibt es eine Möglichkeit, ich nehme ein Stück beliebigen Text und übergeben Sie es in meinem Builder, so dass es in der Lage sein, richtig zu analysieren und bauen es?