Not to mention Tom's point that it can't be in the fxml module without created unwanted (and circular) module dependencies. Seems like it needs to be in the "base" module then, right?

-- Kevin


Richard Bair wrote:
+1 this is my preference. It is useful for things other than FXML, and should 
be considered part of our javafx.beans API.

On Oct 16, 2013, at 4:20 AM, Tom Schindl <tom.schi...@bestsolution.at> wrote:

On 16.10.13 11:22, Eva Krejcirova wrote:
Hi All,

when we retired builders, we caused a problem for FXML which doesn't
have a way to create classes without default constructors. Back then we
decided to use an annotation for this but never actually got to
implement it and we need to fix this for FX8. I am in the process of
adding this functionality to FXMLLoader but we need to decide how the
annotation will look like and I could use some help with this.

We cannot use already existing ConstructorProperties for this, because
it's java.beans package and we don't want to create to dependency on
this package in JavaFX, so we need to introduce a new annotation.

We have two options:

1. Annotate the whole constructor:
e.g.
   @ConstructorArguments({"a", "b", "list"})
   public ImmutableClass(int a, int b, Integer... list)

2. Annotate the arguments:
e.g.
   public ImmutableClass(@FXMLArgument("a") int a,
@FXMLArgument("b")int b, @FXMLArgument("list")Integer... list)


Which option do you like more and how should the annotation be named?
Option 2, but does it really have to hold FXML in the annotation name?
Where would you put the annotation? I think it should NOT be in the
FXML-Package-Namespace because the core should NOT depend on FXML!

I'd go with @Argument or simply @NamedArgument (@Named is already used
by javax.inject)

Tom

Reply via email to