Guillaume, if you feel strongly about this, please file a JIRA. Thanks!

Steve

On 2014-06-05, 4:29 PM, Martin Sladecek wrote:
Maybe some special tags can solve the problem, like
<fx:property name="TEXT">abc</fx:property>
<fx:new class="hello.text" text="abc"/>
<fx:static class="text" property="TEXT">abc</fx:static>

They could be used in cases where the class name violates the restrictions we have for property/object tags. FXML version and SB will have to be update though, which means such fxml will not be compatible with older versions. This is definitely something we should do only on major release (9).

-Martin

On 5.6.2014 22:21, Stephen F Northover wrote:
Seems like we can't/shouldn't fix this. We can at least make sure it is documented.

Steve

On 2014-06-05, 4:19 PM, Martin Sladecek wrote:
Currently, we use case to distinguish between newly created objects (upper-case class name) and properties (lower-case). Otherwise, it would not be clear when there's e.g. a text property and text class if we should set a property called text or create new text object and try to assign it to the default property. The same problem with static setters. Is "hello.text.text" a fully qualified name of text class in or "text" static setter of a hello.text class?

I guess we could define some order in which we would try out this options in the current context, but SB will have a problem since they use static mode which can be used without having the classes on the cp.

-Martin

On 5.6.2014 20:57, Stephen F Northover wrote:
I see no reason why we should enforce this.  Martin, any idea?

Steve

On 2014-06-05, 12:05 PM, Guillaume Anctil wrote:
Hi,

on a project I work on, the code convention does not follow the Java
standard and class names start with a lower case 'c': "cSomeClass.java"

In the <?import ?> parsing of the FXMLLoader, the loadType function looks
like this:

int i = name.indexOf('.');
int n = name.length();
while (i != -1
     && i < n
     && Character.isLowerCase(name.charAt(i + 1))) {
     i = name.indexOf('.', i + 1);
}

if (i == -1 || i == n) {
     throw new ClassNotFoundException();
}

String packageName = name.substring(0, i);
String className = name.substring(i + 1);


This causes a ClassNotFoundException on our custom controls because of the
lowercase check.

I was wondering if a simple:

int i = name.lastIndexOf('.');

Instead of the lowercase check could be viable. The ClassNotFoundException would still be thrown later on, when trying to actually load the class.

Is there a reason that I don't see why the convention _must_ be upheld in
this case?

Thanks.





Reply via email to