Just added the @Component annotation, which works like the <component> element:
@Component(type = "Conditional", bindings = { "condition=message", "element=div" }) public abstract IComponent getIfMessage();
The syntax is definately one of those "lesser of many evils" decisions. Using an array of strings, rather than a series of @Binding elements, means a lot less typing. I actually did the @Binding route first and it was much more verbose and not any more readable.
With this, the XML is becoming increasingly vestigal. There are still a limited number of things that can be expressed in the XML that can't be done using annotations, including <meta>. In addition, line precise exception reporting is compromised by annotations ... there's no file and line data to report. I may have to kludge together something that simply identifies the class, with no line number information.
The test suite is up to 1298 unit tests.
Update: changed the syntax to name=binding reference.
Also, added a very nifty @Message annotation.
What about using something like
ReplyDelete{"condition:message", "element:div"}
for the bindings? This would be much more legible and less error-prone.
Hitting my limit for prefixes, i.e. condition:message is barely ok (but it starts getting confusing what the prefix means), condition:ognl:message is getting worse, condition:hivemind:service:foo.bar.Baz.
ReplyDeleteI did think about "condition=message" or "condition=ognl:message".